diff options
| author | Bobby <[email protected]> | 2025-04-18 19:28:01 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-04-18 19:28:01 +0530 |
| commit | 5dc2f648cf3d9634cfb8763cebc6f1dec4042914 (patch) | |
| tree | 0a5e84fd9915f6f4e93f4fe026d04c0dd4a5db3c /controllers | |
| parent | 5c7536ec347c4c51172960da0c3f5857642fd223 (diff) | |
| download | metachan-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.go | 40 |
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) +} |
