homepage.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. <?php
  2. $app->get('/homepage/image', function ($request, $response, $args) {
  3. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  4. $Organizr->getHomepageMediaImage();
  5. // Don't need below as we kill script... maybe i should clean up correctly
  6. $response->getBody()->write(jsonE($GLOBALS['api']));
  7. return $response
  8. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  9. ->withStatus($GLOBALS['responseCode']);
  10. });
  11. $app->get('/homepage/calendar', function ($request, $response, $args) {
  12. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  13. $Organizr->getCalendar();
  14. $response->getBody()->write(jsonE($GLOBALS['api']));
  15. return $response
  16. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  17. ->withStatus($GLOBALS['responseCode']);
  18. });
  19. $app->get('/homepage/plex/streams', function ($request, $response, $args) {
  20. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  21. $Organizr->getPlexHomepageStreams();
  22. $response->getBody()->write(jsonE($GLOBALS['api']));
  23. return $response
  24. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  25. ->withStatus($GLOBALS['responseCode']);
  26. });
  27. $app->get('/homepage/emby/streams', function ($request, $response, $args) {
  28. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  29. $Organizr->getEmbyHomepageStreams();
  30. $response->getBody()->write(jsonE($GLOBALS['api']));
  31. return $response
  32. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  33. ->withStatus($GLOBALS['responseCode']);
  34. });
  35. $app->get('/homepage/jellyfin/streams', function ($request, $response, $args) {
  36. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  37. $Organizr->getJellyfinHomepageStreams();
  38. $response->getBody()->write(jsonE($GLOBALS['api']));
  39. return $response
  40. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  41. ->withStatus($GLOBALS['responseCode']);
  42. });
  43. $app->get('/homepage/plex/recent', function ($request, $response, $args) {
  44. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  45. $Organizr->getPlexHomepageRecent();
  46. $response->getBody()->write(jsonE($GLOBALS['api']));
  47. return $response
  48. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  49. ->withStatus($GLOBALS['responseCode']);
  50. });
  51. $app->get('/homepage/emby/recent', function ($request, $response, $args) {
  52. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  53. $Organizr->getEmbyHomepageRecent();
  54. $response->getBody()->write(jsonE($GLOBALS['api']));
  55. return $response
  56. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  57. ->withStatus($GLOBALS['responseCode']);
  58. });
  59. $app->get('/homepage/jellyfin/recent', function ($request, $response, $args) {
  60. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  61. $Organizr->getJellyfinHomepageRecent();
  62. $response->getBody()->write(jsonE($GLOBALS['api']));
  63. return $response
  64. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  65. ->withStatus($GLOBALS['responseCode']);
  66. });
  67. $app->get('/homepage/plex/playlists', function ($request, $response, $args) {
  68. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  69. $Organizr->getPlexHomepagePlaylists();
  70. $response->getBody()->write(jsonE($GLOBALS['api']));
  71. return $response
  72. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  73. ->withStatus($GLOBALS['responseCode']);
  74. });
  75. $app->post('/homepage/plex/metadata', function ($request, $response, $args) {
  76. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  77. $Organizr->getPlexHomepageMetadata($Organizr->apiData($request));
  78. $response->getBody()->write(jsonE($GLOBALS['api']));
  79. return $response
  80. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  81. ->withStatus($GLOBALS['responseCode']);
  82. });
  83. $app->post('/homepage/emby/metadata', function ($request, $response, $args) {
  84. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  85. $Organizr->getEmbyHomepageMetadata($Organizr->apiData($request));
  86. $response->getBody()->write(jsonE($GLOBALS['api']));
  87. return $response
  88. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  89. ->withStatus($GLOBALS['responseCode']);
  90. });
  91. $app->post('/homepage/jellyfin/metadata', function ($request, $response, $args) {
  92. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  93. $Organizr->getJellyfinHomepageMetadata($Organizr->apiData($request));
  94. $response->getBody()->write(jsonE($GLOBALS['api']));
  95. return $response
  96. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  97. ->withStatus($GLOBALS['responseCode']);
  98. });
  99. $app->get('/homepage/plex/search/{query}', function ($request, $response, $args) {
  100. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  101. $Organizr->getPlexHomepageSearch($args['query']);
  102. $response->getBody()->write(jsonE($GLOBALS['api']));
  103. return $response
  104. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  105. ->withStatus($GLOBALS['responseCode']);
  106. });
  107. $app->get('/homepage/pihole/stats', function ($request, $response, $args) {
  108. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  109. $Organizr->getPiholeHomepageStats();
  110. $response->getBody()->write(jsonE($GLOBALS['api']));
  111. return $response
  112. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  113. ->withStatus($GLOBALS['responseCode']);
  114. });
  115. $app->get('/homepage/adguard/stats', function ($request, $response, $args) {
  116. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  117. $Organizr->getAdGuardHomepageStats();
  118. $response->getBody()->write(jsonE($GLOBALS['api']));
  119. return $response
  120. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  121. ->withStatus($GLOBALS['responseCode']);
  122. });
  123. $app->get('/homepage/rtorrent/queue', function ($request, $response, $args) {
  124. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  125. $Organizr->getRTorrentHomepageQueue();
  126. $response->getBody()->write(jsonE($GLOBALS['api']));
  127. return $response
  128. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  129. ->withStatus($GLOBALS['responseCode']);
  130. });
  131. $app->get('/homepage/sonarr/queue', function ($request, $response, $args) {
  132. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  133. $Organizr->getSonarrQueue();
  134. $response->getBody()->write(jsonE($GLOBALS['api']));
  135. return $response
  136. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  137. ->withStatus($GLOBALS['responseCode']);
  138. });
  139. $app->get('/homepage/sonarr/calendar', function ($request, $response, $args) {
  140. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  141. $Organizr->getSonarrCalendar();
  142. $response->getBody()->write(jsonE($GLOBALS['api']));
  143. return $response
  144. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  145. ->withStatus($GLOBALS['responseCode']);
  146. });
  147. $app->get('/homepage/radarr/queue', function ($request, $response, $args) {
  148. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  149. $Organizr->getRadarrQueue();
  150. $response->getBody()->write(jsonE($GLOBALS['api']));
  151. return $response
  152. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  153. ->withStatus($GLOBALS['responseCode']);
  154. });
  155. $app->get('/homepage/radarr/calendar', function ($request, $response, $args) {
  156. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  157. $Organizr->getRadarrCalendar();
  158. $response->getBody()->write(jsonE($GLOBALS['api']));
  159. return $response
  160. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  161. ->withStatus($GLOBALS['responseCode']);
  162. });
  163. $app->get('/homepage/lidarr/calendar', function ($request, $response, $args) {
  164. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  165. $Organizr->getLidarrCalendar();
  166. $response->getBody()->write(jsonE($GLOBALS['api']));
  167. return $response
  168. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  169. ->withStatus($GLOBALS['responseCode']);
  170. });
  171. $app->get('/homepage/couchpotato/calendar', function ($request, $response, $args) {
  172. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  173. $Organizr->getCouchPotatoCalendar();
  174. $response->getBody()->write(jsonE($GLOBALS['api']));
  175. return $response
  176. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  177. ->withStatus($GLOBALS['responseCode']);
  178. });
  179. $app->get('/homepage/sickrage/calendar', function ($request, $response, $args) {
  180. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  181. $Organizr->getSickRageCalendar();
  182. $response->getBody()->write(jsonE($GLOBALS['api']));
  183. return $response
  184. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  185. ->withStatus($GLOBALS['responseCode']);
  186. });
  187. $app->get('/homepage/ical/calendar', function ($request, $response, $args) {
  188. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  189. $Organizr->getICalendar();
  190. $response->getBody()->write(jsonE($GLOBALS['api']));
  191. return $response
  192. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  193. ->withStatus($GLOBALS['responseCode']);
  194. });
  195. $app->get('/homepage/deluge/queue', function ($request, $response, $args) {
  196. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  197. $Organizr->getDelugeHomepageQueue();
  198. $response->getBody()->write(jsonE($GLOBALS['api']));
  199. return $response
  200. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  201. ->withStatus($GLOBALS['responseCode']);
  202. });
  203. $app->get('/homepage/transmission/queue', function ($request, $response, $args) {
  204. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  205. $Organizr->getTransmissionHomepageQueue();
  206. $response->getBody()->write(jsonE($GLOBALS['api']));
  207. return $response
  208. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  209. ->withStatus($GLOBALS['responseCode']);
  210. });
  211. $app->get('/homepage/qbittorrent/queue', function ($request, $response, $args) {
  212. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  213. $Organizr->getQBittorrentHomepageQueue();
  214. $response->getBody()->write(jsonE($GLOBALS['api']));
  215. return $response
  216. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  217. ->withStatus($GLOBALS['responseCode']);
  218. });
  219. $app->get('/homepage/utorrent/queue', function ($request, $response, $args) {
  220. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  221. $Organizr->getuTorrentHomepageQueue();
  222. $response->getBody()->write(jsonE($GLOBALS['api']));
  223. return $response
  224. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  225. ->withStatus($GLOBALS['responseCode']);
  226. });
  227. $app->get('/homepage/jdownloader/queue', function ($request, $response, $args) {
  228. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  229. $Organizr->getJdownloaderHomepageQueue();
  230. $response->getBody()->write(jsonE($GLOBALS['api']));
  231. return $response
  232. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  233. ->withStatus($GLOBALS['responseCode']);
  234. });
  235. $app->get('/homepage/nzbget/queue', function ($request, $response, $args) {
  236. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  237. $Organizr->getNzbgetHomepageQueue();
  238. $response->getBody()->write(jsonE($GLOBALS['api']));
  239. return $response
  240. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  241. ->withStatus($GLOBALS['responseCode']);
  242. });
  243. $app->get('/homepage/sabnzbd/queue', function ($request, $response, $args) {
  244. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  245. $Organizr->getSabNZBdHomepageQueue();
  246. $response->getBody()->write(jsonE($GLOBALS['api']));
  247. return $response
  248. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  249. ->withStatus($GLOBALS['responseCode']);
  250. });
  251. $app->post('/homepage/sabnzbd/queue/resume', function ($request, $response, $args) {
  252. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  253. if ($Organizr->qualifyRequest(1, true)) {
  254. $Organizr->resumeSabNZBdQueue($Organizr->apiData($request)['target']);
  255. }
  256. $response->getBody()->write(jsonE($GLOBALS['api']));
  257. return $response
  258. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  259. ->withStatus($GLOBALS['responseCode']);
  260. });
  261. $app->post('/homepage/sabnzbd/queue/pause', function ($request, $response, $args) {
  262. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  263. if ($Organizr->qualifyRequest(1, true)) {
  264. $Organizr->pauseSabNZBdQueue($Organizr->apiData($request)['target']);
  265. }
  266. $response->getBody()->write(jsonE($GLOBALS['api']));
  267. return $response
  268. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  269. ->withStatus($GLOBALS['responseCode']);
  270. });
  271. $app->get('/homepage/unifi/data', function ($request, $response, $args) {
  272. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  273. $Organizr->getUnifiHomepageData();
  274. $response->getBody()->write(jsonE($GLOBALS['api']));
  275. return $response
  276. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  277. ->withStatus($GLOBALS['responseCode']);
  278. });
  279. $app->get('/homepage/tautulli/data', function ($request, $response, $args) {
  280. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  281. $Organizr->getTautulliHomepageData();
  282. $response->getBody()->write(jsonE($GLOBALS['api']));
  283. return $response
  284. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  285. ->withStatus($GLOBALS['responseCode']);
  286. });
  287. $app->get('/homepage/tautulli/names', function ($request, $response, $args) {
  288. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  289. $Organizr->getTautulliFriendlyNames();
  290. $response->getBody()->write(jsonE($GLOBALS['api']));
  291. return $response
  292. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  293. ->withStatus($GLOBALS['responseCode']);
  294. });
  295. $app->get('/homepage/netdata/data', function ($request, $response, $args) {
  296. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  297. $Organizr->getNetdataHomepageData();
  298. $response->getBody()->write(jsonE($GLOBALS['api']));
  299. return $response
  300. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  301. ->withStatus($GLOBALS['responseCode']);
  302. });
  303. $app->get('/homepage/monitorr/data', function ($request, $response, $args) {
  304. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  305. $Organizr->getMonitorrHomepageData();
  306. $response->getBody()->write(jsonE($GLOBALS['api']));
  307. return $response
  308. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  309. ->withStatus($GLOBALS['responseCode']);
  310. });
  311. $app->get('/homepage/kuma/data', function ($request, $response, $args) {
  312. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  313. $Organizr->getUptimeKumaHomepageData();
  314. $response->getBody()->write(jsonE($GLOBALS['api']));
  315. return $response
  316. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  317. ->withStatus($GLOBALS['responseCode']);
  318. });
  319. $app->get('/homepage/prompage/data', function ($request, $response, $args) {
  320. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  321. $Organizr->getpromPageHomepageData();
  322. $response->getBody()->write(jsonE($GLOBALS['api']));
  323. return $response
  324. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  325. ->withStatus($GLOBALS['responseCode']);
  326. });
  327. $app->get('/homepage/speedtest/data', function ($request, $response, $args) {
  328. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  329. $Organizr->getSpeedtestHomepageData();
  330. $response->getBody()->write(jsonE($GLOBALS['api']));
  331. return $response
  332. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  333. ->withStatus($GLOBALS['responseCode']);
  334. });
  335. $app->get('/homepage/octoprint/data', function ($request, $response, $args) {
  336. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  337. $Organizr->getOctoprintHomepageData();
  338. $response->getBody()->write(jsonE($GLOBALS['api']));
  339. return $response
  340. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  341. ->withStatus($GLOBALS['responseCode']);
  342. });
  343. $app->get('/homepage/weather/data', function ($request, $response, $args) {
  344. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  345. $Organizr->getWeatherAndAirData();
  346. $response->getBody()->write(jsonE($GLOBALS['api']));
  347. return $response
  348. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  349. ->withStatus($GLOBALS['responseCode']);
  350. });
  351. $app->post('/homepage/weather/coordinates', function ($request, $response, $args) {
  352. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  353. $Organizr->searchCityForCoordinates($Organizr->apiData($request)['query']);
  354. $response->getBody()->write(jsonE($GLOBALS['api']));
  355. return $response
  356. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  357. ->withStatus($GLOBALS['responseCode']);
  358. });
  359. $app->get('/homepage/healthchecks', function ($request, $response, $args) {
  360. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  361. $Organizr->getHealthChecks();
  362. $response->getBody()->write(jsonE($GLOBALS['api']));
  363. return $response
  364. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  365. ->withStatus($GLOBALS['responseCode']);
  366. });
  367. $app->get('/homepage/healthchecks/{tags}', function ($request, $response, $args) {
  368. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  369. $Organizr->getHealthChecks($args['tags']);
  370. $response->getBody()->write(jsonE($GLOBALS['api']));
  371. return $response
  372. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  373. ->withStatus($GLOBALS['responseCode']);
  374. });
  375. $app->get('/homepage/overseerr/metadata/{type}/{id}', function ($request, $response, $args) {
  376. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  377. $Organizr->getOverseerrMetadata($args['id'], $args['type']);
  378. $response->getBody()->write(jsonE($GLOBALS['api']));
  379. return $response
  380. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  381. ->withStatus($GLOBALS['responseCode']);
  382. });
  383. $app->get('/homepage/overseerr/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) {
  384. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  385. $args['limit'] = $args['limit'] ?? $Organizr->config['overseerrLimit'];
  386. $args['offset'] = $args['offset'] ?? 0;
  387. $Organizr->getOverseerrRequests($args['limit'], $args['offset']);
  388. $response->getBody()->write(jsonE($GLOBALS['api']));
  389. return $response
  390. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  391. ->withStatus($GLOBALS['responseCode']);
  392. });
  393. $app->post('/homepage/overseerr/requests/{type}/{id}/available', function ($request, $response, $args) {
  394. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  395. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'available');
  396. $response->getBody()->write(jsonE($GLOBALS['api']));
  397. return $response
  398. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  399. ->withStatus($GLOBALS['responseCode']);
  400. });
  401. $app->post('/homepage/overseerr/requests/{type}/{id}/unavailable', function ($request, $response, $args) {
  402. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  403. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'unavailable');
  404. $response->getBody()->write(jsonE($GLOBALS['api']));
  405. return $response
  406. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  407. ->withStatus($GLOBALS['responseCode']);
  408. });
  409. $app->post('/homepage/overseerr/requests/{type}/{id}/pending', function ($request, $response, $args) {
  410. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  411. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'pending');
  412. $response->getBody()->write(jsonE($GLOBALS['api']));
  413. return $response
  414. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  415. ->withStatus($GLOBALS['responseCode']);
  416. });
  417. $app->post('/homepage/overseerr/requests/{type}/{id}/approve', function ($request, $response, $args) {
  418. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  419. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'approve');
  420. $response->getBody()->write(jsonE($GLOBALS['api']));
  421. return $response
  422. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  423. ->withStatus($GLOBALS['responseCode']);
  424. });
  425. $app->put('/homepage/overseerr/requests/{type}/{id}/deny', function ($request, $response, $args) {
  426. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  427. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'deny');
  428. $response->getBody()->write(jsonE($GLOBALS['api']));
  429. return $response
  430. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  431. ->withStatus($GLOBALS['responseCode']);
  432. });
  433. $app->delete('/homepage/overseerr/requests/{type}/{id}', function ($request, $response, $args) {
  434. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  435. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'delete');
  436. $response->getBody()->write(jsonE($GLOBALS['api']));
  437. return $response
  438. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  439. ->withStatus($GLOBALS['responseCode']);
  440. });
  441. $app->post('/homepage/overseerr/requests/{type}/{id}[/{seasons}]', function ($request, $response, $args) {
  442. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  443. $args['seasons'] = $args['seasons'] ?? null;
  444. $Organizr->addOverseerrRequest($args['id'], $args['type'], $args['seasons']);
  445. $response->getBody()->write(jsonE($GLOBALS['api']));
  446. return $response
  447. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  448. ->withStatus($GLOBALS['responseCode']);
  449. });
  450. $app->get('/homepage/ombi/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) {
  451. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  452. $args['type'] = $args['type'] ?? 'both';
  453. $args['limit'] = $args['limit'] ?? $Organizr->config['ombiLimit'];
  454. $args['offset'] = $args['offset'] ?? 0;
  455. $Organizr->getOmbiRequests($args['type'], $args['limit'], $args['offset']);
  456. $response->getBody()->write(jsonE($GLOBALS['api']));
  457. return $response
  458. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  459. ->withStatus($GLOBALS['responseCode']);
  460. });
  461. $app->post('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) {
  462. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  463. $Organizr->addOmbiRequest($args['id'], $args['type']);
  464. $response->getBody()->write(jsonE($GLOBALS['api']));
  465. return $response
  466. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  467. ->withStatus($GLOBALS['responseCode']);
  468. });
  469. $app->post('/homepage/ombi/requests/{type}/{id}/available', function ($request, $response, $args) {
  470. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  471. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'available');
  472. $response->getBody()->write(jsonE($GLOBALS['api']));
  473. return $response
  474. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  475. ->withStatus($GLOBALS['responseCode']);
  476. });
  477. $app->post('/homepage/ombi/requests/{type}/{id}/unavailable', function ($request, $response, $args) {
  478. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  479. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'unavailable');
  480. $response->getBody()->write(jsonE($GLOBALS['api']));
  481. return $response
  482. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  483. ->withStatus($GLOBALS['responseCode']);
  484. });
  485. $app->post('/homepage/ombi/requests/{type}/{id}/approve', function ($request, $response, $args) {
  486. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  487. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'approve');
  488. $response->getBody()->write(jsonE($GLOBALS['api']));
  489. return $response
  490. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  491. ->withStatus($GLOBALS['responseCode']);
  492. });
  493. $app->put('/homepage/ombi/requests/{type}/{id}/deny', function ($request, $response, $args) {
  494. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  495. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'deny');
  496. $response->getBody()->write(jsonE($GLOBALS['api']));
  497. return $response
  498. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  499. ->withStatus($GLOBALS['responseCode']);
  500. });
  501. $app->delete('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) {
  502. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  503. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'delete');
  504. $response->getBody()->write(jsonE($GLOBALS['api']));
  505. return $response
  506. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  507. ->withStatus($GLOBALS['responseCode']);
  508. });
  509. $app->get('/homepage/youtube/{query}', function ($request, $response, $args) {
  510. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  511. $Organizr->youtubeSearch($args['query']);
  512. $response->getBody()->write(jsonE($GLOBALS['api']));
  513. return $response
  514. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  515. ->withStatus($GLOBALS['responseCode']);
  516. });
  517. $app->post('/homepage/scrape', function ($request, $response, $args) {
  518. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  519. $Organizr->scrapePage($Organizr->apiData($request));
  520. $response->getBody()->write(jsonE($GLOBALS['api']));
  521. return $response
  522. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  523. ->withStatus($GLOBALS['responseCode']);
  524. });
  525. $app->get('/homepage/jackett/{query}', function ($request, $response, $args) {
  526. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  527. $Organizr->searchJackettIndexers($args['query']);
  528. $response->getBody()->write(jsonE($GLOBALS['api']));
  529. return $response
  530. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  531. ->withStatus($GLOBALS['responseCode']);
  532. });
  533. $app->post('/homepage/jackett/download/', function ($request, $response, $args) {
  534. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  535. $postData = $request->getParsedBody();
  536. $Organizr->performJackettBackHoleDownload($postData['url']);
  537. $response->getBody()->write(jsonE($GLOBALS['api']));
  538. return $response
  539. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  540. ->withStatus($GLOBALS['responseCode']);
  541. });
  542. $app->get('/homepage/prowlarr/{query}', function ($request, $response, $args) {
  543. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  544. $Organizr->searchProwlarrIndexers($args['query']);
  545. $response->getBody()->write(jsonE($GLOBALS['api']));
  546. return $response
  547. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  548. ->withStatus($GLOBALS['responseCode']);
  549. });
  550. $app->post('/homepage/prowlarr/download/', function ($request, $response, $args) {
  551. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  552. $postData = $request->getParsedBody();
  553. $Organizr->performProwlarrBackHoleDownload($postData['guid'], $postData['indexerId']);
  554. $response->getBody()->write(jsonE($GLOBALS['api']));
  555. return $response
  556. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  557. ->withStatus($GLOBALS['responseCode']);
  558. });
  559. $app->get('/homepage/trakt/calendar', function ($request, $response, $args) {
  560. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  561. $Organizr->getTraktCalendar();
  562. $response->getBody()->write(jsonE($GLOBALS['api']));
  563. return $response
  564. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  565. ->withStatus($GLOBALS['responseCode']);
  566. });
  567. $app->get('/homepage/donate/success', function ($request, $response, $args) {
  568. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  569. $response->getBody()->write($Organizr->showHTML('Donation Success', 'Thank you for donating!', true));
  570. return $response
  571. ->withHeader('Content-Type', 'text/html;charset=UTF-8')
  572. ->withStatus(200);
  573. });
  574. $app->get('/homepage/donate/cancel', function ($request, $response, $args) {
  575. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  576. $response->getBody()->write($Organizr->showHTML('Donation Cancelled', 'Taking you back...', true));
  577. return $response
  578. ->withHeader('Content-Type', 'text/html;charset=UTF-8')
  579. ->withStatus(200);
  580. });
  581. $app->get('/homepage/donate/error', function ($request, $response, $args) {
  582. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  583. $response->getBody()->write($Organizr->showHTML('Donation Error', 'An error has occurred!', true));
  584. return $response
  585. ->withHeader('Content-Type', 'text/html;charset=UTF-8')
  586. ->withStatus(500);
  587. });
  588. $app->get('/homepage/donate', function ($request, $response, $args) {
  589. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  590. $Organizr->homepageDonateUserHistory();
  591. $response->getBody()->write(jsonE($GLOBALS['api']));
  592. return $response
  593. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  594. ->withStatus($GLOBALS['responseCode']);
  595. });
  596. $app->get('/homepage/donate/[{amount}]', function ($request, $response, $args) {
  597. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  598. $amount = $args['amount'] ?: $Organizr->config['homepageDonateMinimum'] / 100;
  599. $amount = (int)$amount;
  600. $amount = ($amount > 0) ? $amount : $Organizr->config['homepageDonateMinimum'] / 100;
  601. $Organizr->homepageDonateCreateSession($amount);
  602. $response->getBody()->write(jsonE($GLOBALS['api']));
  603. return $response
  604. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  605. ->withStatus($GLOBALS['responseCode']);
  606. });
  607. $app->post('/homepage/donate', function ($request, $response, $args) {
  608. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  609. $amount = $_GET['amount'] ?? 1000;
  610. $Organizr->homepageDonateCreateSession($amount);
  611. $response->getBody()->write(jsonE($GLOBALS['api']));
  612. return $response
  613. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  614. ->withStatus($GLOBALS['responseCode']);
  615. });
  616. $app->get('/homepage/embyLiveTVTracker/stats', function ($request, $response, $args) {
  617. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  618. $Organizr->getHomepageEmbyLiveTVStats();
  619. $response->getBody()->write(jsonE($GLOBALS['api']));
  620. return $response
  621. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  622. ->withStatus($GLOBALS['responseCode']);
  623. });
  624. $app->get('/homepage/embyLiveTVTracker/activity', function ($request, $response, $args) {
  625. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  626. $Organizr->getHomepageEmbyLiveTVActivity();
  627. $response->getBody()->write(jsonE($GLOBALS['api']));
  628. return $response
  629. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  630. ->withStatus($GLOBALS['responseCode']);
  631. });
  632. $app->get('/homepage/jellystat', function ($request, $response, $args) {
  633. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  634. $Organizr->getJellyStatData();
  635. $response->getBody()->write(jsonE($GLOBALS['api']));
  636. return $response
  637. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  638. ->withStatus($GLOBALS['responseCode']);
  639. });
  640. $app->post('/homepage/jellystat/metadata', function ($request, $response, $args) {
  641. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  642. $Organizr->info('JellyStat metadata route called');
  643. $apiData = $Organizr->apiData($request);
  644. $Organizr->info('API data: ' . json_encode($apiData));
  645. $Organizr->getJellyStatMetadata($apiData);
  646. $response->getBody()->write(jsonE($GLOBALS['api']));
  647. return $response
  648. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  649. ->withStatus($GLOBALS['responseCode']);
  650. });