aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRitesh Ghosh <[email protected]>2023-08-13 19:42:21 +0530
committerRitesh Ghosh <[email protected]>2023-08-13 19:42:21 +0530
commit953c99a9f3b3a8fa24a99f4e907b38ca465e4949 (patch)
tree661fa89bb530a0a7d893441b36d57d4c4a2e3752 /src
parent74a6b96dbf86320a6a94af9169ebc12da39af735 (diff)
downloadaniwatch-api-953c99a9f3b3a8fa24a99f4e907b38ca465e4949.tar.xz
aniwatch-api-953c99a9f3b3a8fa24a99f4e907b38ca465e4949.zip
feat(animeProducer): added `animeProducer` controller
Diffstat (limited to 'src')
-rw-r--r--src/controllers/animeProducer.controller.ts37
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;