<?php declare(strict_types=1); namespace OCA\GPodderSync\Controller; use OCA\GPodderSync\Core\PodcastData\PodcastDataReader; use OCA\GPodderSync\Core\PodcastData\PodcastMetricsReader; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; use OCP\IRequest; class PersonalSettingsController extends Controller { private string $userId; private PodcastMetricsReader $metricsReader; private PodcastDataReader $dataReader; public function __construct( string $AppName, IRequest $request, ?string $UserId, PodcastMetricsReader $metricsReader, PodcastDataReader $dataReader ) { parent::__construct($AppName, $request); $this->userId = $UserId ?? ''; $this->metricsReader = $metricsReader; $this->dataReader = $dataReader; } /** * * @NoAdminRequired * @NoCSRFRequired * * @return JSONResponse */ public function metrics(): JSONResponse { $metrics = $this->metricsReader->metrics($this->userId); return new JSONResponse([ 'subscriptions' => $metrics, ]); } /** * @NoAdminRequired * @NoCSRFRequired * * @param string $url * @return JsonResponse */ public function podcastData(string $url = ''): JsonResponse { if ($url === '') { return new JSONResponse([ 'message' => "Missing query parameter 'url'.", 'data' => null, ], Http::STATUS_BAD_REQUEST); } return new JsonResponse([ 'data' => $this->dataReader->getCachedOrFetchPodcastData($url, $this->userId), ]); } }