93 lines
2.0 KiB
Go
93 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
|
|
|
"voltaserve/config"
|
|
"voltaserve/errorpkg"
|
|
"voltaserve/helper"
|
|
"voltaserve/router"
|
|
|
|
jwtware "github.com/gofiber/contrib/jwt"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
// @title Voltaserve API
|
|
// @version 1.0.0
|
|
// @BasePath /v1
|
|
func main() {
|
|
if _, err := os.Stat(".env.local"); err == nil {
|
|
err := godotenv.Load(".env.local")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
} else {
|
|
err := godotenv.Load()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
cfg := config.GetConfig()
|
|
|
|
app := fiber.New(fiber.Config{
|
|
ErrorHandler: errorpkg.ErrorHandler,
|
|
BodyLimit: int(helper.MegabyteToByte(cfg.Limits.MultipartBodyLengthLimitMB)),
|
|
})
|
|
|
|
v1 := app.Group("/v1")
|
|
|
|
f := v1.Group("files")
|
|
|
|
app.Get("v1/health", func(c *fiber.Ctx) error {
|
|
return c.SendStatus(200)
|
|
})
|
|
|
|
app.Use(cors.New(cors.Config{
|
|
AllowOrigins: strings.Join(cfg.Security.CORSOrigins, ","),
|
|
}))
|
|
|
|
fileDownloads := router.NewFileDownloadRouter()
|
|
fileDownloads.AppendNonJWTRoutes(f)
|
|
|
|
conversionWebhook := router.NewConversionWebhookRouter()
|
|
conversionWebhook.AppendInternalRoutes(f)
|
|
|
|
app.Use(jwtware.New(jwtware.Config{
|
|
SigningKey: jwtware.SigningKey{Key: []byte(cfg.Security.JWTSigningKey)},
|
|
}))
|
|
|
|
files := router.NewFileRouter()
|
|
files.AppendRoutes(f)
|
|
|
|
invitations := router.NewInvitationRouter()
|
|
invitations.AppendRoutes(v1.Group("invitations"))
|
|
|
|
notifications := router.NewNotificationRouter()
|
|
notifications.AppendRoutes(v1.Group("notifications"))
|
|
|
|
organizations := router.NewOrganizationRouter()
|
|
organizations.AppendRoutes(v1.Group("organizations"))
|
|
|
|
storage := router.NewStorageRouter()
|
|
storage.AppendRoutes(v1.Group("storage"))
|
|
|
|
workspaces := router.NewWorkspaceRouter()
|
|
workspaces.AppendRoutes(v1.Group("workspaces"))
|
|
|
|
groups := router.NewGroupRouter()
|
|
groups.AppendRoutes(v1.Group("groups"))
|
|
|
|
users := router.NewUserRouter()
|
|
users.AppendRoutes(v1.Group("users"))
|
|
|
|
if err := app.Listen(fmt.Sprintf(":%d", cfg.Port)); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|