init
This commit is contained in:
76
internal/adapter/handlers/http/app.go
Normal file
76
internal/adapter/handlers/http/app.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"github.com/aykhans/oh-my-chat/internal/adapter/handlers/http/middlewares"
|
||||
"github.com/gofiber/contrib/websocket"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/cors"
|
||||
"github.com/gofiber/fiber/v2/middleware/recover"
|
||||
)
|
||||
|
||||
type Handlers struct {
|
||||
userHandler *UserHandler
|
||||
authHandler *AuthHandler
|
||||
chatHandler *ChatHandler
|
||||
}
|
||||
|
||||
type Middlewares struct {
|
||||
authMiddleware *middlewares.AuthMiddleware
|
||||
wsMiddleware *middlewares.WSMiddleware
|
||||
}
|
||||
|
||||
func NewApp(
|
||||
isDev bool,
|
||||
corsAllowedOrigins string,
|
||||
authMiddleware *middlewares.AuthMiddleware,
|
||||
wsMiddleware *middlewares.WSMiddleware,
|
||||
userHandler *UserHandler,
|
||||
authHandler *AuthHandler,
|
||||
chatHandler *ChatHandler,
|
||||
) *fiber.App {
|
||||
handlers := &Handlers{
|
||||
userHandler: userHandler,
|
||||
authHandler: authHandler,
|
||||
chatHandler: chatHandler,
|
||||
}
|
||||
middlewares := &Middlewares{
|
||||
authMiddleware: authMiddleware,
|
||||
wsMiddleware: wsMiddleware,
|
||||
}
|
||||
|
||||
app := fiber.New()
|
||||
if !isDev {
|
||||
app.Use(recover.New())
|
||||
app.Use(cors.New(cors.Config{
|
||||
AllowOrigins: corsAllowedOrigins,
|
||||
}))
|
||||
}
|
||||
router := app.Group("/api")
|
||||
setV1Routers(router, handlers, middlewares)
|
||||
|
||||
return app
|
||||
}
|
||||
|
||||
func setV1Routers(
|
||||
router fiber.Router,
|
||||
handlers *Handlers,
|
||||
middlewares *Middlewares,
|
||||
) {
|
||||
router = router.Group("/v1")
|
||||
|
||||
{ // User routes
|
||||
user := router.Group("/user")
|
||||
user.Post("/register", handlers.userHandler.Register)
|
||||
}
|
||||
|
||||
{ // Auth routes
|
||||
auth := router.Group("/auth")
|
||||
auth.Post("/login", handlers.authHandler.Login)
|
||||
}
|
||||
|
||||
{ // Chat routes
|
||||
chat := router.Group("/chat")
|
||||
chat.Use("/ws", middlewares.authMiddleware.IsUser, middlewares.wsMiddleware.Upgrade)
|
||||
chat.Get("/ws", websocket.New(handlers.chatHandler.Connect))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user