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("/api/session", sessionHandler) uploadRoute := api.router.Group("/api/upload") { 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) } // 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-session", sessionStore)) // // //router.Use(secure.New(secure.Config{ //ContentSecurityPolicy: "default-src 'self'; script-src *; worker-src *", ////IsDevelopment: true, //})) return &API{ router: router, } }