homepage.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
  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/speedtest/data', function ($request, $response, $args) {
  320. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  321. $Organizr->getSpeedtestHomepageData();
  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/octoprint/data', function ($request, $response, $args) {
  328. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  329. $Organizr->getOctoprintHomepageData();
  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/weather/data', function ($request, $response, $args) {
  336. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  337. $Organizr->getWeatherAndAirData();
  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->post('/homepage/weather/coordinates', function ($request, $response, $args) {
  344. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  345. $Organizr->searchCityForCoordinates($Organizr->apiData($request)['query']);
  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->get('/homepage/healthchecks', function ($request, $response, $args) {
  352. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  353. $Organizr->getHealthChecks();
  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/{tags}', function ($request, $response, $args) {
  360. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  361. $Organizr->getHealthChecks($args['tags']);
  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/overseerr/metadata/{type}/{id}', function ($request, $response, $args) {
  368. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  369. $Organizr->getOverseerrMetadata($args['id'], $args['type']);
  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/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) {
  376. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  377. $args['limit'] = $args['limit'] ?? $Organizr->config['overseerrLimit'];
  378. $args['offset'] = $args['offset'] ?? 0;
  379. $Organizr->getOverseerrRequests($args['limit'], $args['offset']);
  380. $response->getBody()->write(jsonE($GLOBALS['api']));
  381. return $response
  382. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  383. ->withStatus($GLOBALS['responseCode']);
  384. });
  385. $app->post('/homepage/overseerr/requests/{type}/{id}/available', function ($request, $response, $args) {
  386. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  387. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'available');
  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}/unavailable', function ($request, $response, $args) {
  394. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  395. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'unavailable');
  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}/pending', function ($request, $response, $args) {
  402. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  403. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'pending');
  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}/approve', function ($request, $response, $args) {
  410. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  411. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'approve');
  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->put('/homepage/overseerr/requests/{type}/{id}/deny', function ($request, $response, $args) {
  418. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  419. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'deny');
  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->delete('/homepage/overseerr/requests/{type}/{id}', function ($request, $response, $args) {
  426. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  427. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'delete');
  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->post('/homepage/overseerr/requests/{type}/{id}[/{seasons}]', function ($request, $response, $args) {
  434. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  435. $args['seasons'] = $args['seasons'] ?? null;
  436. $Organizr->addOverseerrRequest($args['id'], $args['type'], $args['seasons']);
  437. $response->getBody()->write(jsonE($GLOBALS['api']));
  438. return $response
  439. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  440. ->withStatus($GLOBALS['responseCode']);
  441. });
  442. $app->get('/homepage/ombi/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) {
  443. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  444. $args['type'] = $args['type'] ?? 'both';
  445. $args['limit'] = $args['limit'] ?? $Organizr->config['ombiLimit'];
  446. $args['offset'] = $args['offset'] ?? 0;
  447. $Organizr->getOmbiRequests($args['type'], $args['limit'], $args['offset']);
  448. $response->getBody()->write(jsonE($GLOBALS['api']));
  449. return $response
  450. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  451. ->withStatus($GLOBALS['responseCode']);
  452. });
  453. $app->post('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) {
  454. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  455. $Organizr->addOmbiRequest($args['id'], $args['type']);
  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}/available', function ($request, $response, $args) {
  462. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  463. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'available');
  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}/unavailable', function ($request, $response, $args) {
  470. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  471. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'unavailable');
  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}/approve', function ($request, $response, $args) {
  478. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  479. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'approve');
  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->put('/homepage/ombi/requests/{type}/{id}/deny', function ($request, $response, $args) {
  486. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  487. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'deny');
  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->delete('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) {
  494. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  495. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'delete');
  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->get('/homepage/youtube/{query}', function ($request, $response, $args) {
  502. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  503. $Organizr->youtubeSearch($args['query']);
  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->post('/homepage/scrape', function ($request, $response, $args) {
  510. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  511. $Organizr->scrapePage($Organizr->apiData($request));
  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->get('/homepage/jackett/{query}', function ($request, $response, $args) {
  518. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  519. $Organizr->searchJackettIndexers($args['query']);
  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->post('/homepage/jackett/download/', function ($request, $response, $args) {
  526. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  527. $postData = $request->getParsedBody();
  528. $Organizr->performJackettBackHoleDownload($postData['url']);
  529. $response->getBody()->write(jsonE($GLOBALS['api']));
  530. return $response
  531. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  532. ->withStatus($GLOBALS['responseCode']);
  533. });
  534. $app->get('/homepage/prowlarr/{query}', function ($request, $response, $args) {
  535. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  536. $Organizr->searchProwlarrIndexers($args['query']);
  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->post('/homepage/prowlarr/download/', function ($request, $response, $args) {
  543. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  544. $postData = $request->getParsedBody();
  545. $Organizr->performProwlarrBackHoleDownload($postData['guid'], $postData['indexerId']);
  546. $response->getBody()->write(jsonE($GLOBALS['api']));
  547. return $response
  548. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  549. ->withStatus($GLOBALS['responseCode']);
  550. });
  551. $app->get('/homepage/trakt/calendar', function ($request, $response, $args) {
  552. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  553. $Organizr->getTraktCalendar();
  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/donate/success', function ($request, $response, $args) {
  560. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  561. $response->getBody()->write($Organizr->showHTML('Donation Success', 'Thank you for donating!', true));
  562. return $response
  563. ->withHeader('Content-Type', 'text/html;charset=UTF-8')
  564. ->withStatus(200);
  565. });
  566. $app->get('/homepage/donate/cancel', function ($request, $response, $args) {
  567. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  568. $response->getBody()->write($Organizr->showHTML('Donation Cancelled', 'Taking you back...', true));
  569. return $response
  570. ->withHeader('Content-Type', 'text/html;charset=UTF-8')
  571. ->withStatus(200);
  572. });
  573. $app->get('/homepage/donate/error', function ($request, $response, $args) {
  574. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  575. $response->getBody()->write($Organizr->showHTML('Donation Error', 'An error has occurred!', true));
  576. return $response
  577. ->withHeader('Content-Type', 'text/html;charset=UTF-8')
  578. ->withStatus(500);
  579. });
  580. $app->get('/homepage/donate', function ($request, $response, $args) {
  581. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  582. $Organizr->homepageDonateUserHistory();
  583. $response->getBody()->write(jsonE($GLOBALS['api']));
  584. return $response
  585. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  586. ->withStatus($GLOBALS['responseCode']);
  587. });
  588. $app->get('/homepage/donate/[{amount}]', function ($request, $response, $args) {
  589. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  590. $amount = $args['amount'] ?: $Organizr->config['homepageDonateMinimum'] / 100;
  591. $amount = (int)$amount;
  592. $amount = ($amount > 0) ? $amount : $Organizr->config['homepageDonateMinimum'] / 100;
  593. $Organizr->homepageDonateCreateSession($amount);
  594. $response->getBody()->write(jsonE($GLOBALS['api']));
  595. return $response
  596. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  597. ->withStatus($GLOBALS['responseCode']);
  598. });
  599. $app->post('/homepage/donate', function ($request, $response, $args) {
  600. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  601. $amount = $_GET['amount'] ?? 1000;
  602. $Organizr->homepageDonateCreateSession($amount);
  603. $response->getBody()->write(jsonE($GLOBALS['api']));
  604. return $response
  605. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  606. ->withStatus($GLOBALS['responseCode']);
  607. });