initial commit
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"git.aiterp.net/lucifer/server3/app/config"
|
||||
"git.aiterp.net/lucifer/server3/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func Events(r gin.IRoutes) {
|
||||
r.POST("", handler(func(c *gin.Context) (interface{}, error) {
|
||||
var event models.Event
|
||||
err := parseBody(c, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
config.EventChannel<-event
|
||||
return event, nil
|
||||
}))
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"git.aiterp.net/lucifer/server3/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var errorMap = map[error]int{
|
||||
models.ErrInvalidName: 400,
|
||||
}
|
||||
|
||||
type response struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
func handler(fun func(c *gin.Context) (interface{}, error)) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
val, err := fun(c)
|
||||
if err != nil {
|
||||
errCode := errorMap[err]
|
||||
if errCode == 0 {
|
||||
errCode = 500
|
||||
}
|
||||
|
||||
c.JSON(errCode, response{
|
||||
Code: errCode,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(200, val)
|
||||
}
|
||||
}
|
||||
|
||||
func parseBody(c *gin.Context, target interface{}) error {
|
||||
err := json.NewDecoder(c.Request.Body).Decode(target)
|
||||
if err != nil {
|
||||
return models.ErrBadInput
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user