oc-datacenter/controllers/session.go

54 lines
1.2 KiB
Go

package controllers
import (
"fmt"
"oc-datacenter/infrastructure"
"strconv"
beego "github.com/beego/beego/v2/server/web"
)
type SessionController struct {
beego.Controller
}
// @Title GetToken
// @Description find booking by id
// @Param id path string "id of the datacenter"
// @Param duration path string "duration of the token"
// @Success 200 {booking} models.booking
// @router /token/:id/:duration [get]
func (o *SessionController) GetToken() {
id := o.Ctx.Input.Param(":id")
durationSTR := o.Ctx.Input.Param(":duration")
duration, err := strconv.Atoi(durationSTR)
if err != nil {
// change code to 400
o.Ctx.Output.SetStatus(400)
o.Data["json"] = map[string]string{"error": "duration invalid"}
o.ServeJSON()
return
}
serv, err := infrastructure.NewService()
if err != nil {
// change code to 500
o.Ctx.Output.SetStatus(500)
o.Data["json"] = map[string]string{"error": err.Error()}
o.ServeJSON()
return
}
fmt.Println("BLAPO", id, duration)
token, err := serv.GenerateToken(o.Ctx.Request.Context(), id, duration)
if err != nil {
// change code to 500
o.Ctx.Output.SetStatus(500)
o.Data["json"] = map[string]string{"error": err.Error()}
o.ServeJSON()
return
}
o.Data["json"] = token
o.ServeJSON()
}