settingsService->setFilesWindowsSupport($enabled); return new DataResponse(['enabled' => $enabled]); } /** * Start a filename sanitization job * * @param null|int $limit Limit the number of users to be sanitized per run * @param null|string $charReplacement Optionally specify a character to replace forbidden characters with * @return DataResponse * @throws OCSBadRequestException On invalid parameters or if a sanitization is already running */ #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] #[Route(type: Route::TYPE_API, verb: 'POST', url: '/api/v1/filenames/sanitization')] public function sanitizeFilenames(?int $limit = 10, ?string $charReplacement = null): DataResponse { if ($limit < 1) { throw new OCSBadRequestException($this->l10n->t('Limit must be a positive integer.')); } if ($charReplacement !== null && ($charReplacement === '' || mb_strlen($charReplacement) > 1)) { throw new OCSBadRequestException($this->l10n->t('The replacement character may only be a single character.')); } if ($this->settingsService->isFilenameSanitizationRunning()) { throw new OCSBadRequestException($this->l10n->t('Filename sanitization already started.')); } $this->jobList->add(SanitizeFilenames::class, [ 'offset' => 0, 'limit' => $limit, 'charReplacement' => $charReplacement, ]); return new DataResponse([]); } #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] #[Route(type: Route::TYPE_API, verb: 'GET', url: '/api/v1/filenames/sanitization')] public function getStatus(): DataResponse { return new DataResponse($this->settingsService->getSanitizationStatus()); } /** * @return DataResponse * @throws OCSBadRequestException If there is no filename sanitization in progress */ #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] #[Route(type: Route::TYPE_API, verb: 'DELETE', url: '/api/v1/filenames/sanitization')] public function stopSanitization(): DataResponse { if (!$this->settingsService->isFilenameSanitizationRunning()) { throw new OCSBadRequestException($this->l10n->t('No filename sanitization in progress.')); } $this->jobList->remove(SanitizeFilenames::class); return new DataResponse([]); } }