54 lines
1.2 KiB
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()
|
|
}
|