aboutsummaryrefslogtreecommitdiff
path: root/controllers
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-04-18 19:28:01 +0530
committerBobby <[email protected]>2025-04-18 19:28:01 +0530
commit5dc2f648cf3d9634cfb8763cebc6f1dec4042914 (patch)
tree0a5e84fd9915f6f4e93f4fe026d04c0dd4a5db3c /controllers
parent5c7536ec347c4c51172960da0c3f5857642fd223 (diff)
downloadmetachan-5dc2f648cf3d9634cfb8763cebc6f1dec4042914.tar.xz
metachan-5dc2f648cf3d9634cfb8763cebc6f1dec4042914.zip
basic anime details with episodes; added jikan and anilist as metadata fetchers; added tmdb for fetching episode descriptions
Diffstat (limited to 'controllers')
-rw-r--r--controllers/anime.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/controllers/anime.go b/controllers/anime.go
new file mode 100644
index 0000000..67ffea1
--- /dev/null
+++ b/controllers/anime.go
@@ -0,0 +1,40 @@
+package controllers
+
+import (
+ "metachan/database"
+ "metachan/types"
+ "metachan/utils/anime"
+ "metachan/utils/logger"
+ "metachan/utils/mappers"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func GetAnimeByMALID(c *fiber.Ctx) error {
+ malID := c.Params("mal_id")
+ if malID == "" {
+ return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
+ "error": "Query parameter MAL ID is required",
+ })
+ }
+
+ mapping, err := database.GetAnimeMappingViaMALID(mappers.ForceInt(malID))
+ if err != nil {
+ return c.Status(fiber.StatusNotFound).JSON(fiber.Map{
+ "error": "Anime not found",
+ })
+ }
+
+ anime, err := anime.GetAnimeDetails(mapping)
+ if err != nil {
+ logger.Log("Failed to fetch anime details: "+err.Error(), types.LogOptions{
+ Level: types.Error,
+ Prefix: "AnimeAPI",
+ })
+ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
+ "error": "Failed to fetch anime details",
+ })
+ }
+
+ return c.JSON(anime)
+}