39 lines
1023 B
Go
39 lines
1023 B
Go
package common
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/nose7en/ToyBoomServer/defs"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func GlobalClientID(username, clientType, clientID string) string {
|
|
return fmt.Sprintf("%s.%s.%s", username, clientType, clientID)
|
|
}
|
|
|
|
func Wrapper[T ReqType, U RespType](handler func(context.Context, *T) (*U, error)) func(c *gin.Context) {
|
|
return func(c *gin.Context) {
|
|
Logger(c).Infof("request url: %s", c.Request.URL)
|
|
req, err := GetProtoRequest[T](c)
|
|
if err != nil {
|
|
Logger(c).WithError(err).Errorf("Failed to get request, url: %s", c.Request.URL)
|
|
ErrResp(c, &defs.CommonResponse{
|
|
Status: &defs.Status{Code: defs.RespCode_INVALID, Message: defs.RespMessage_INVALID},
|
|
}, err.Error())
|
|
return
|
|
}
|
|
|
|
resp, err := handler(c, req)
|
|
if err != nil {
|
|
Logger(c).WithError(err).Errorf("Failed to handle request, url: %s", c.Request.URL)
|
|
ErrResp(c, resp, err.Error())
|
|
return
|
|
}
|
|
|
|
OKResp(c, resp)
|
|
Logger(c).Infof("handle request success, response url: %s", c.Request.URL)
|
|
}
|
|
}
|