aboutsummaryrefslogtreecommitdiff
path: root/router/router.go
blob: 9e2b2bd699b5f773a70407f6b3b4498ef1e0ba66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package router

import (
	"metachan/controllers"

	"github.com/gofiber/fiber/v2"
)

func Initialize(router *fiber.App) {
	// Health
	router.Get("/health", controllers.HealthStatus)

	// Anime routes
	animeRouter := router.Group("/anime")
	animeRouter.Get("/:id", controllers.GetAnime)
	animeRouter.Get("/:id/episodes", controllers.GetAnimeEpisodes)
	animeRouter.Get("/:id/episodes/:episodeId", controllers.GetAnimeEpisode)
	animeRouter.Get("/:id/characters", controllers.GetAnimeCharacters)
	animeRouter.Get("/:id/people", controllers.GetAnimePeople)

	characterRouter := router.Group("/character")
	characterRouter.Get("/:characterId", controllers.GetAnimeCharacter)

	peopleRouter := router.Group("/people")
	peopleRouter.Get("/:personId", controllers.GetPerson)

	// Anime routes
	// animeRouter := router.Group("/a")
	// animeRouter.Get("/genres", controllers.GetGenres)
	// animeRouter.Get("/genres/:id", controllers.GetAnimeByGenre)
	// animeRouter.Get("/:id", controllers.GetAnime)
	// animeRouter.Get("/:id/episodes", controllers.GetAnimeEpisodes)
	// animeRouter.Get("/:id/episodes/:episodeId", controllers.GetAnimeEpisode)
	// animeRouter.Get("/:id/characters", controllers.GetAnimeCharacters)

	// // Producer routes
	// producerRouter := router.Group("/producers")
	// producerRouter.Get("/", controllers.GetProducers)
	// producerRouter.Get("/:id", controllers.GetProducer)
	// producerRouter.Get("/:id/anime", controllers.GetAnimeByProducer)

	// // 404 Default
	// router.Use(func(c *fiber.Ctx) error {
	// 	return c.Status(fiber.StatusNotFound).JSON(fiber.Map{
	// 		"error": "Not Found",
	// 	})
	// })
}

func ErrorHandler(ctx *fiber.Ctx, err error) error {
	code := fiber.StatusInternalServerError
	if e, ok := err.(*fiber.Error); ok {
		code = e.Code
	}

	switch code {
	case fiber.StatusBadRequest:
		return controllers.BadRequest(ctx, err)
	case fiber.StatusUnauthorized:
		return controllers.Unauthorized(ctx, err)
	case fiber.StatusForbidden:
		return controllers.Forbidden(ctx, err)
	case fiber.StatusNotFound:
		return controllers.NotFound(ctx, err)
	case fiber.StatusInternalServerError:
		return controllers.InternalServerError(ctx, err)
	default:
		return controllers.DefaultError(ctx, err)
	}
}