You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bit4sat/api/routes.go

73 lines
1.4 KiB
Go

package api
import (
"git.sp4ke.com/sp4ke/bit4sat/config"
"git.sp4ke.com/sp4ke/bit4sat/storage"
"github.com/gin-contrib/cors"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/redis"
"github.com/gin-gonic/gin"
)
var (
UploadCtrl = storage.UploadCtrl{}
)
type API struct {
router *gin.Engine
}
func (api *API) Run() {
// Get last session if it exists
api.router.GET("/a/session", sessionHandler)
uploadRoute := api.router.Group("/a/u")
{
uploadRoute.POST("", UploadCtrl.New)
uploadRoute.PUT(":id", UploadCtrl.Upload)
//TODO: make a poll version + this one
uploadRoute.GET("/check/:id", UploadCtrl.CheckStatus)
uploadRoute.GET("/poll/:id", UploadCtrl.PollStatus)
}
// Download route
downRoute := api.router.Group("/a/d")
{
downRoute.GET("t", downHandler)
}
// Websocket server
//api.router.GET("/ws", ws.Serve)
// LN charge callback
api.router.POST("/"+config.ChargeCallbackEndpoint, invoiceCbHandler)
api.router.Run(config.ApiListen)
}
func NewAPI() *API {
router := gin.Default()
router.Use(cors.Default())
// Setup Session
sessionStore, err := redis.NewStore(10, "tcp", "redis:6379",
"", []byte(config.SessionSecret))
if err != nil {
panic(err)
}
router.Use(sessions.Sessions("bit4sat", sessionStore))
//
//
//router.Use(secure.New(secure.Config{
//ContentSecurityPolicy: "default-src 'self'; script-src *; worker-src *",
////IsDevelopment: true,
//}))
return &API{
router: router,
}
}