Passed
Push — main ( 0df38d...371274 )
by Yume
01:17
created

routes.New   B

Complexity

Conditions 8

Size

Total Lines 47
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 27
nop 0
dl 0
loc 47
rs 7.3333
c 0
b 0
f 0
1
package routes
2
3
import (
4
	"github.com/gofiber/fiber/v2/middleware/cache"
5
	"github.com/gofiber/fiber/v2/middleware/compress"
6
	"github.com/memnix/memnixrest/app/controllers"
7
	_ "github.com/memnix/memnixrest/docs" // Side effect import
8
	"time"
9
10
	"github.com/gofiber/fiber/v2/middleware/cors"
11
12
	"github.com/gofiber/fiber/v2"
13
	"github.com/gofiber/swagger"
14
)
15
16
func New() *fiber.App {
17
	// Create new app
18
	app := fiber.New()
19
20
	app.Use(cors.New(cors.Config{
21
		AllowOrigins:     "http://localhost, *",
22
		AllowHeaders:     "Origin, Content-Type, Accept, Authorization",
23
		AllowCredentials: true,
24
	}))
25
26
	app.Use(compress.New(compress.Config{
27
		Level: compress.LevelBestSpeed, // 2
28
	}))
29
30
	app.Use(cache.New(cache.Config{
31
		Next: func(c *fiber.Ctx) bool {
32
			return c.Query("refresh") == "true" || c.Path() == "/v1/user" || c.Path() == "/v1/login" || c.Path() == "/v1/register" || c.Path() == "/v1/logout"
33
		},
34
		Expiration:   2 * time.Minute,
35
		CacheControl: true,
36
	}))
37
38
	app.Get("/swagger/*", swagger.HandlerDefault) // default
39
40
	// Api group
41
	v1 := app.Group("/v1")
42
43
	v1.Get("/", func(c *fiber.Ctx) error {
44
		return fiber.NewError(fiber.StatusForbidden, "This is not a valid route") // Custom error
45
	})
46
47
	// Auth
48
	v1.Post("/register", controllers.Register)
49
	v1.Post("/login", controllers.Login)
50
	v1.Get("/user", controllers.User)
51
	v1.Post("/logout", controllers.Logout)
52
53
	v1.Get("/", func(c *fiber.Ctx) error {
54
		return fiber.NewError(fiber.StatusForbidden, "This is not a valid route") // Custom error
55
	})
56
57
	// Register routes
58
	registerUserRoutes(v1) // /v1/users/
59
	registerDeckRoutes(v1) // /v1/decks/
60
	registerCardRoutes(v1) // /v1/cards/
61
62
	return app
63
}
64