get('/homepage/image', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getHomepageMediaImage(); // Don't need below as we kill script... maybe i should clean up correctly $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/plex/streams', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getPlexHomepageStreams(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/emby/streams', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getEmbyHomepageStreams(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/jellyfin/streams', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getJellyfinHomepageStreams(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/plex/recent', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getPlexHomepageRecent(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/emby/recent', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getEmbyHomepageRecent(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/jellyfin/recent', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getJellyfinHomepageRecent(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/plex/playlists', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getPlexHomepagePlaylists(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/plex/metadata', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getPlexHomepageMetadata($Organizr->apiData($request)); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/emby/metadata', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getEmbyHomepageMetadata($Organizr->apiData($request)); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/jellyfin/metadata', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getJellyfinHomepageMetadata($Organizr->apiData($request)); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/plex/search/{query}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getPlexHomepageSearch($args['query']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/pihole/stats', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getPiholeHomepageStats(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/adguard/stats', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getAdGuardHomepageStats(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/rtorrent/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getRTorrentHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/sonarr/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getSonarrQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/sonarr/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getSonarrCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/radarr/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getRadarrQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/radarr/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getRadarrCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/lidarr/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getLidarrCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/couchpotato/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getCouchPotatoCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/sickrage/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getSickRageCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/ical/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getICalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/deluge/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getDelugeHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/transmission/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getTransmissionHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/qbittorrent/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getQBittorrentHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/utorrent/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getuTorrentHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/jdownloader/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getJdownloaderHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/nzbget/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getNzbgetHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/sabnzbd/queue', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getSabNZBdHomepageQueue(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/sabnzbd/queue/resume', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); if ($Organizr->qualifyRequest(1, true)) { $Organizr->resumeSabNZBdQueue($Organizr->apiData($request)['target']); } $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/sabnzbd/queue/pause', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); if ($Organizr->qualifyRequest(1, true)) { $Organizr->pauseSabNZBdQueue($Organizr->apiData($request)['target']); } $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/unifi/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getUnifiHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/tautulli/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getTautulliHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/tautulli/names', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getTautulliFriendlyNames(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/netdata/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getNetdataHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/monitorr/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getMonitorrHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/kuma/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getUptimeKumaHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/prompage/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getpromPageHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/speedtest/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getSpeedtestHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/octoprint/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getOctoprintHomepageData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/weather/data', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getWeatherAndAirData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/weather/coordinates', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->searchCityForCoordinates($Organizr->apiData($request)['query']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/healthchecks', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getHealthChecks(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/healthchecks/{tags}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getHealthChecks($args['tags']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/overseerr/metadata/{type}/{id}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getOverseerrMetadata($args['id'], $args['type']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/overseerr/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $args['limit'] = $args['limit'] ?? $Organizr->config['overseerrLimit']; $args['offset'] = $args['offset'] ?? 0; $Organizr->getOverseerrRequests($args['limit'], $args['offset']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/overseerr/requests/{type}/{id}/available', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'available'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/overseerr/requests/{type}/{id}/unavailable', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'unavailable'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/overseerr/requests/{type}/{id}/pending', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'pending'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/overseerr/requests/{type}/{id}/approve', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'approve'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->put('/homepage/overseerr/requests/{type}/{id}/deny', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'deny'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->delete('/homepage/overseerr/requests/{type}/{id}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'delete'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/overseerr/requests/{type}/{id}[/{seasons}]', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $args['seasons'] = $args['seasons'] ?? null; $Organizr->addOverseerrRequest($args['id'], $args['type'], $args['seasons']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/ombi/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $args['type'] = $args['type'] ?? 'both'; $args['limit'] = $args['limit'] ?? $Organizr->config['ombiLimit']; $args['offset'] = $args['offset'] ?? 0; $Organizr->getOmbiRequests($args['type'], $args['limit'], $args['offset']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->addOmbiRequest($args['id'], $args['type']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/ombi/requests/{type}/{id}/available', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOmbiRequest($args['id'], $args['type'], 'available'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/ombi/requests/{type}/{id}/unavailable', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOmbiRequest($args['id'], $args['type'], 'unavailable'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/ombi/requests/{type}/{id}/approve', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOmbiRequest($args['id'], $args['type'], 'approve'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->put('/homepage/ombi/requests/{type}/{id}/deny', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOmbiRequest($args['id'], $args['type'], 'deny'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->delete('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->actionOmbiRequest($args['id'], $args['type'], 'delete'); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/youtube/{query}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->youtubeSearch($args['query']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/scrape', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->scrapePage($Organizr->apiData($request)); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/jackett/{query}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->searchJackettIndexers($args['query']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/jackett/download/', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $postData = $request->getParsedBody(); $Organizr->performJackettBackHoleDownload($postData['url']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/prowlarr/{query}', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->searchProwlarrIndexers($args['query']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/prowlarr/download/', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $postData = $request->getParsedBody(); $Organizr->performProwlarrBackHoleDownload($postData['guid'], $postData['indexerId']); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/trakt/calendar', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getTraktCalendar(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/donate/success', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $response->getBody()->write($Organizr->showHTML('Donation Success', 'Thank you for donating!', true)); return $response ->withHeader('Content-Type', 'text/html;charset=UTF-8') ->withStatus(200); }); $app->get('/homepage/donate/cancel', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $response->getBody()->write($Organizr->showHTML('Donation Cancelled', 'Taking you back...', true)); return $response ->withHeader('Content-Type', 'text/html;charset=UTF-8') ->withStatus(200); }); $app->get('/homepage/donate/error', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $response->getBody()->write($Organizr->showHTML('Donation Error', 'An error has occurred!', true)); return $response ->withHeader('Content-Type', 'text/html;charset=UTF-8') ->withStatus(500); }); $app->get('/homepage/donate', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->homepageDonateUserHistory(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/donate/[{amount}]', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $amount = $args['amount'] ?: $Organizr->config['homepageDonateMinimum'] / 100; $amount = (int)$amount; $amount = ($amount > 0) ? $amount : $Organizr->config['homepageDonateMinimum'] / 100; $Organizr->homepageDonateCreateSession($amount); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/donate', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $amount = $_GET['amount'] ?? 1000; $Organizr->homepageDonateCreateSession($amount); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/embyLiveTVTracker/stats', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getHomepageEmbyLiveTVStats(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/embyLiveTVTracker/activity', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getHomepageEmbyLiveTVActivity(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->get('/homepage/jellystat', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->getJellyStatData(); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); }); $app->post('/homepage/jellystat/metadata', function ($request, $response, $args) { $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr(); $Organizr->info('JellyStat metadata route called'); $apiData = $Organizr->apiData($request); $Organizr->info('API data: ' . json_encode($apiData)); $Organizr->getJellyStatMetadata($apiData); $response->getBody()->write(jsonE($GLOBALS['api'])); return $response ->withHeader('Content-Type', 'application/json;charset=UTF-8') ->withStatus($GLOBALS['responseCode']); });