diff options
| author | Ritesh Ghosh <[email protected]> | 2023-08-13 19:42:21 +0530 |
|---|---|---|
| committer | Ritesh Ghosh <[email protected]> | 2023-08-13 19:42:21 +0530 |
| commit | 953c99a9f3b3a8fa24a99f4e907b38ca465e4949 (patch) | |
| tree | 661fa89bb530a0a7d893441b36d57d4c4a2e3752 /src/controllers/animeProducer.controller.ts | |
| parent | 74a6b96dbf86320a6a94af9169ebc12da39af735 (diff) | |
| download | aniwatch-api-953c99a9f3b3a8fa24a99f4e907b38ca465e4949.tar.xz aniwatch-api-953c99a9f3b3a8fa24a99f4e907b38ca465e4949.zip | |
feat(animeProducer): added `animeProducer` controller
Diffstat (limited to 'src/controllers/animeProducer.controller.ts')
| -rw-r--r-- | src/controllers/animeProducer.controller.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/controllers/animeProducer.controller.ts b/src/controllers/animeProducer.controller.ts new file mode 100644 index 0000000..5776a80 --- /dev/null +++ b/src/controllers/animeProducer.controller.ts @@ -0,0 +1,37 @@ +import createHttpError from "http-errors"; +import { RequestHandler } from "express"; +import { scrapeProducerAnimes } from "../parsers"; +import { + AnimeProducerPathParams, + AnimeProducerQueryParams, +} from "../models/controllers"; + +// /anime/producer/${name}?page=${page} +const getProducerAnimes: RequestHandler< + AnimeProducerPathParams, + Awaited<ReturnType<typeof scrapeProducerAnimes>>, + unknown, + AnimeProducerQueryParams +> = async (req, res, next) => { + try { + const name: string | null = req.params.name + ? decodeURIComponent(req.params.name as string) + : null; + + const page: number = req.query.page + ? Number(decodeURIComponent(req.query?.page as string)) + : 1; + + if (name === null) { + throw createHttpError.BadRequest("Anime producer name required"); + } + + const data = await scrapeProducerAnimes(name, page); + res.status(200).json(data); + } catch (err: any) { + console.error(err); + next(err); + } +}; + +export default getProducerAnimes; |
