/** * @NoAdminRequired * @NoCSRFRequired * * @param string $username * @param string $password * @return JsonResponse */ public function testSettings($username, $password) { $xmlrpc = new XmlRpc($username, $password); try { $serverInfo = $xmlrpc->serverInfo(); } catch (HttpException $exception) { if ($exception->getCode() === Http::STATUS_UNAUTHORIZED) { $this->logger->info('Settings test failed (unauthorized)', ['app' => $this->appName]); return new JSONResponse(['success' => false, 'error' => 'Authorization failed'], Http::STATUS_UNAUTHORIZED); } else { $this->logger->warn(sprintf('Settings test failed (%d: %s)', $exception->getCode(), $exception->getMessage()), ['app' => $this->appName]); return new JSONResponse(['success' => false, 'error' => $exception->getMessage()], Http::STATUS_BAD_GATEWAY); } } catch (\Exception $exception) { $this->logger->error(sprintf('Settings test failed with exception (%s)', $exception->getMessage()), ['app' => $this->appName]); return new JSONResponse(['success' => false, 'error' => $exception->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR); } $this->logger->info('Settings test successful', ['app' => $this->appName]); return new JSONResponse(['success' => true, 'serverInfo' => $serverInfo->toJSON()]); }