66 lines
1.3 KiB
Go
66 lines
1.3 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"twitch-clone/pkg/auth"
|
|
"twitch-clone/pkg/database"
|
|
"twitch-clone/pkg/middleware"
|
|
"twitch-clone/pkg/models"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
|
"github.com/gofiber/fiber/v2/middleware/logger"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func Init() {
|
|
err := godotenv.Load()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
app := fiber.New(fiber.Config{
|
|
ErrorHandler: func(ctx *fiber.Ctx, err error) error {
|
|
code := fiber.StatusInternalServerError
|
|
if e, ok := err.(*fiber.Error); ok {
|
|
code = e.Code
|
|
}
|
|
|
|
return ctx.Status(code).JSON(models.BaseError{Message: err.Error()})
|
|
},
|
|
})
|
|
database.ConnectDb()
|
|
auth.CreateClient()
|
|
|
|
app.Use(cors.New(cors.Config{
|
|
AllowOrigins: "*",
|
|
AllowMethods: "GET, POST, HEAD, PUT,DELETE, PATCH, OPTIONS",
|
|
AllowCredentials: true,
|
|
}))
|
|
app.Use(logger.New())
|
|
|
|
api := app.Group("/api")
|
|
v1 := api.Group("/v1")
|
|
|
|
test := v1.Group("/test")
|
|
test.Use(middleware.CheckSession)
|
|
test.Get("/", func(c *fiber.Ctx) error {
|
|
return c.SendString("This is a protected route!")
|
|
})
|
|
|
|
// Serve React frontend
|
|
app.Static("/", "./dist")
|
|
app.Get("/*", func(ctx *fiber.Ctx) error {
|
|
return ctx.SendFile("./dist/index.html")
|
|
})
|
|
|
|
err = app.Listen(":5000")
|
|
if err != nil {
|
|
log.Fatal(err.Error())
|
|
}
|
|
}
|