2022-10-04 00:36:01 +08:00
|
|
|
|
package handler
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"mc-client-updater-server/internal/service"
|
|
|
|
|
"mc-client-updater-server/pkg/param"
|
|
|
|
|
"mc-client-updater-server/pkg/result"
|
2024-01-07 15:13:35 +08:00
|
|
|
|
"mc-client-updater-server/pkg/util"
|
|
|
|
|
"time"
|
2022-10-04 00:36:01 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func HandleLogin(c *gin.Context) {
|
|
|
|
|
res := result.NewResult(c)
|
|
|
|
|
loginParam := param.LoginParam{}
|
|
|
|
|
err := c.ShouldBindJSON(&loginParam)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res.BadRequest()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-07 15:13:35 +08:00
|
|
|
|
srv := service.NewUserService(c)
|
2022-10-04 00:36:01 +08:00
|
|
|
|
srv.Login(loginParam.Username, loginParam.Password)
|
2024-01-07 15:13:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func HandleGrantAdd(c *gin.Context) {
|
|
|
|
|
res := result.NewResult(c)
|
|
|
|
|
p := param.NewGrantTokenParam{}
|
|
|
|
|
err := c.ShouldBindJSON(&p)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res.BadRequest()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if p.ExpireAt != "" {
|
|
|
|
|
isValid := util.IsSQLTimeFormat(p.ExpireAt)
|
|
|
|
|
if !isValid {
|
|
|
|
|
res.BadRequestWithMsg("请求参数错误:时间格式错误,应为2006-01-02 15:04:05格式")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if p.TTL == 0 {
|
|
|
|
|
res.BadRequestWithMsg("请求参数错误:至少提供expire_at和ttl中的一项且不为0")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
p.ExpireAt = util.ToSQLTimeFormat(time.Now().Add(time.Duration(p.TTL) * time.Second))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
srv := service.NewInstanceService(c)
|
|
|
|
|
// 验证 target -> instance(name) 是否存在
|
|
|
|
|
_, err = srv.GetInstanceByName(p.Target)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res.InvalidInstance(p.Target)
|
|
|
|
|
return
|
|
|
|
|
}
|
2022-10-04 00:36:01 +08:00
|
|
|
|
|
2024-01-07 15:13:35 +08:00
|
|
|
|
grantEntity, err := srv.NewGrantToken(p.Target, p.ExpireAt)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res.InternalServerError("生成授权码失败")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
res.Success(grantEntity)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func HandleNewInstance(c *gin.Context) {
|
|
|
|
|
res := result.NewResult(c)
|
|
|
|
|
p := param.AddInstanceParam{}
|
|
|
|
|
err := c.ShouldBindJSON(&p)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res.BadRequest()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
srv := service.NewInstanceService(c)
|
|
|
|
|
inst, err := srv.AddInstance(p.Name, p.UpdateURL)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res.DuplicatedValue("实例名称已存在")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
res.Success(inst)
|
2022-10-04 00:36:01 +08:00
|
|
|
|
}
|