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.
67 lines
1.4 KiB
Go
67 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("/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,
|
|
}
|
|
}
|