homepage.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  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/rtorrent/queue', function ($request, $response, $args) {
  116. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  117. $Organizr->getRTorrentHomepageQueue();
  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/sonarr/queue', function ($request, $response, $args) {
  124. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  125. $Organizr->getSonarrQueue();
  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/calendar', function ($request, $response, $args) {
  132. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  133. $Organizr->getSonarrCalendar();
  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/radarr/queue', function ($request, $response, $args) {
  140. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  141. $Organizr->getRadarrQueue();
  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/calendar', function ($request, $response, $args) {
  148. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  149. $Organizr->getRadarrCalendar();
  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/lidarr/calendar', function ($request, $response, $args) {
  156. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  157. $Organizr->getLidarrCalendar();
  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/couchpotato/calendar', function ($request, $response, $args) {
  164. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  165. $Organizr->getCouchPotatoCalendar();
  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/sickrage/calendar', function ($request, $response, $args) {
  172. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  173. $Organizr->getSickRageCalendar();
  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/ical/calendar', function ($request, $response, $args) {
  180. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  181. $Organizr->getICalendar();
  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/deluge/queue', function ($request, $response, $args) {
  188. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  189. $Organizr->getDelugeHomepageQueue();
  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/transmission/queue', function ($request, $response, $args) {
  196. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  197. $Organizr->getTransmissionHomepageQueue();
  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/qbittorrent/queue', function ($request, $response, $args) {
  204. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  205. $Organizr->getQBittorrentHomepageQueue();
  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/utorrent/queue', function ($request, $response, $args) {
  212. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  213. $Organizr->getuTorrentHomepageQueue();
  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/jdownloader/queue', function ($request, $response, $args) {
  220. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  221. $Organizr->getJdownloaderHomepageQueue();
  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/nzbget/queue', function ($request, $response, $args) {
  228. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  229. $Organizr->getNzbgetHomepageQueue();
  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/sabnzbd/queue', function ($request, $response, $args) {
  236. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  237. $Organizr->getSabNZBdHomepageQueue();
  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->post('/homepage/sabnzbd/queue/resume', function ($request, $response, $args) {
  244. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  245. if ($Organizr->qualifyRequest(1, true)) {
  246. $Organizr->resumeSabNZBdQueue($Organizr->apiData($request)['target']);
  247. }
  248. $response->getBody()->write(jsonE($GLOBALS['api']));
  249. return $response
  250. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  251. ->withStatus($GLOBALS['responseCode']);
  252. });
  253. $app->post('/homepage/sabnzbd/queue/pause', function ($request, $response, $args) {
  254. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  255. if ($Organizr->qualifyRequest(1, true)) {
  256. $Organizr->pauseSabNZBdQueue($Organizr->apiData($request)['target']);
  257. }
  258. $response->getBody()->write(jsonE($GLOBALS['api']));
  259. return $response
  260. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  261. ->withStatus($GLOBALS['responseCode']);
  262. });
  263. $app->get('/homepage/unifi/data', function ($request, $response, $args) {
  264. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  265. $Organizr->getUnifiHomepageData();
  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/tautulli/data', function ($request, $response, $args) {
  272. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  273. $Organizr->getTautulliHomepageData();
  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/names', function ($request, $response, $args) {
  280. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  281. $Organizr->getTautulliFriendlyNames();
  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/netdata/data', function ($request, $response, $args) {
  288. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  289. $Organizr->getNetdataHomepageData();
  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/monitorr/data', function ($request, $response, $args) {
  296. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  297. $Organizr->getMonitorrHomepageData();
  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/speedtest/data', function ($request, $response, $args) {
  304. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  305. $Organizr->getSpeedtestHomepageData();
  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/octoprint/data', function ($request, $response, $args) {
  312. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  313. $Organizr->getOctoprintHomepageData();
  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/weather/data', function ($request, $response, $args) {
  320. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  321. $Organizr->getWeatherAndAirData();
  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->post('/homepage/weather/coordinates', function ($request, $response, $args) {
  328. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  329. $Organizr->searchCityForCoordinates($Organizr->apiData($request)['query']);
  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/healthchecks', function ($request, $response, $args) {
  336. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  337. $Organizr->getHealthChecks();
  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/healthchecks/{tags}', function ($request, $response, $args) {
  344. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  345. $Organizr->getHealthChecks($args['tags']);
  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/overseerr/metadata/{type}/{id}', function ($request, $response, $args) {
  352. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  353. $Organizr->getOverseerrMetadata($args['id'], $args['type']);
  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/overseerr/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) {
  360. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  361. $args['limit'] = $args['limit'] ?? $Organizr->config['ombiLimit'];
  362. $args['offset'] = $args['offset'] ?? 0;
  363. $Organizr->getOverseerrRequests($args['limit'], $args['offset']);
  364. $response->getBody()->write(jsonE($GLOBALS['api']));
  365. return $response
  366. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  367. ->withStatus($GLOBALS['responseCode']);
  368. });
  369. $app->post('/homepage/overseerr/requests/{type}/{id}/available', function ($request, $response, $args) {
  370. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  371. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'available');
  372. $response->getBody()->write(jsonE($GLOBALS['api']));
  373. return $response
  374. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  375. ->withStatus($GLOBALS['responseCode']);
  376. });
  377. $app->post('/homepage/overseerr/requests/{type}/{id}/unavailable', function ($request, $response, $args) {
  378. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  379. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'unavailable');
  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}/pending', function ($request, $response, $args) {
  386. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  387. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'pending');
  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}/approve', function ($request, $response, $args) {
  394. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  395. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'approve');
  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->put('/homepage/overseerr/requests/{type}/{id}/deny', function ($request, $response, $args) {
  402. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  403. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'deny');
  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->delete('/homepage/overseerr/requests/{type}/{id}', function ($request, $response, $args) {
  410. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  411. $Organizr->actionOverseerrRequest($args['id'], $args['type'], 'delete');
  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}[/{seasons}]', function ($request, $response, $args) {
  418. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  419. $args['seasons'] = $args['seasons'] ?? null;
  420. $Organizr->addOverseerrRequest($args['id'], $args['type'], $args['seasons']);
  421. $response->getBody()->write(jsonE($GLOBALS['api']));
  422. return $response
  423. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  424. ->withStatus($GLOBALS['responseCode']);
  425. });
  426. $app->get('/homepage/ombi/requests[/{type}[/{limit}[/{offset}]]]', function ($request, $response, $args) {
  427. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  428. $args['type'] = $args['type'] ?? 'both';
  429. $args['limit'] = $args['limit'] ?? $Organizr->config['ombiLimit'];
  430. $args['offset'] = $args['offset'] ?? 0;
  431. $Organizr->getOmbiRequests($args['type'], $args['limit'], $args['offset']);
  432. $response->getBody()->write(jsonE($GLOBALS['api']));
  433. return $response
  434. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  435. ->withStatus($GLOBALS['responseCode']);
  436. });
  437. $app->post('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) {
  438. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  439. $Organizr->addOmbiRequest($args['id'], $args['type']);
  440. $response->getBody()->write(jsonE($GLOBALS['api']));
  441. return $response
  442. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  443. ->withStatus($GLOBALS['responseCode']);
  444. });
  445. $app->post('/homepage/ombi/requests/{type}/{id}/available', function ($request, $response, $args) {
  446. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  447. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'available');
  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}/unavailable', function ($request, $response, $args) {
  454. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  455. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'unavailable');
  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}/approve', function ($request, $response, $args) {
  462. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  463. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'approve');
  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->put('/homepage/ombi/requests/{type}/{id}/deny', function ($request, $response, $args) {
  470. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  471. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'deny');
  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->delete('/homepage/ombi/requests/{type}/{id}', function ($request, $response, $args) {
  478. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  479. $Organizr->actionOmbiRequest($args['id'], $args['type'], 'delete');
  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->get('/homepage/youtube/{query}', function ($request, $response, $args) {
  486. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  487. $Organizr->youtubeSearch($args['query']);
  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->post('/homepage/scrape', function ($request, $response, $args) {
  494. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  495. $Organizr->scrapePage($Organizr->apiData($request));
  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/jackett/{query}', function ($request, $response, $args) {
  502. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  503. $Organizr->searchJackettIndexers($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/jackett/download/', function ($request, $response, $args) {
  510. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  511. $postData = $request->getParsedBody();
  512. $Organizr->performJackettBackHoleDownload($postData['url']);
  513. $response->getBody()->write(jsonE($GLOBALS['api']));
  514. return $response
  515. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  516. ->withStatus($GLOBALS['responseCode']);
  517. });
  518. $app->get('/homepage/trakt/calendar', function ($request, $response, $args) {
  519. $Organizr = ($request->getAttribute('Organizr')) ?? new Organizr();
  520. $Organizr->getTraktCalendar();
  521. $response->getBody()->write(jsonE($GLOBALS['api']));
  522. return $response
  523. ->withHeader('Content-Type', 'application/json;charset=UTF-8')
  524. ->withStatus($GLOBALS['responseCode']);
  525. });