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/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/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/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/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']); });