diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/controllers/animeEpisodes.controller.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/controllers/animeEpisodes.controller.ts b/src/controllers/animeEpisodes.controller.ts new file mode 100644 index 0000000..35abdf2 --- /dev/null +++ b/src/controllers/animeEpisodes.controller.ts @@ -0,0 +1,31 @@ +import createHttpError from "http-errors"; +import { RequestHandler } from "express"; +import { scrapeAnimeEpisodes } from "../parsers"; +import { AnimeEpisodePathParams } from "../models/controllers"; + +// /anime/episodes/${anime-id} +const getAnimeEpisodes: RequestHandler< + AnimeEpisodePathParams, + Awaited<ReturnType<typeof scrapeAnimeEpisodes>>, + unknown, + unknown +> = async (req, res, next) => { + try { + const animeId = req.params.animeId + ? decodeURIComponent(req.params.animeId) + : null; + + if (animeId === null) { + throw createHttpError.BadRequest("Anime Id required"); + } + + const data = await scrapeAnimeEpisodes(animeId); + + res.status(200).json(data); + } catch (err: any) { + console.error(err); + next(err); + } +}; + +export default getAnimeEpisodes; |
