54 lines
1.0 KiB
Go
54 lines
1.0 KiB
Go
package request
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const (
|
|
ReqInfoKey reqInfoKeyType = "request-info"
|
|
)
|
|
|
|
func SetTraceId(c *gin.Context, traceId string) {
|
|
info, exists := c.Get(ReqInfoKey)
|
|
if exists {
|
|
parsedInfo := info.(RequestInfo)
|
|
parsedInfo.TraceId = traceId
|
|
|
|
c.Set(ReqInfoKey, parsedInfo)
|
|
|
|
return
|
|
}
|
|
c.Set(ReqInfoKey, RequestInfo{TraceId: traceId})
|
|
}
|
|
|
|
func SetUserId(c *gin.Context, userId int64) {
|
|
info, exists := c.Get(ReqInfoKey)
|
|
if exists {
|
|
parsedInfo := info.(RequestInfo)
|
|
parsedInfo.UserId = userId
|
|
|
|
c.Set(ReqInfoKey, parsedInfo)
|
|
|
|
return
|
|
}
|
|
|
|
c.Set(ReqInfoKey, RequestInfo{UserId: userId})
|
|
}
|
|
|
|
func SetUserContext(c *gin.Context, payload map[string]interface{}) {
|
|
c.Set(ReqInfoKey, RequestInfo{
|
|
UserId: int64(payload["userId"].(float64)),
|
|
Role: payload["role"].(string),
|
|
})
|
|
}
|
|
|
|
func ContextWithReqInfo(c *gin.Context) context.Context {
|
|
info, ok := c.Get(ReqInfoKey)
|
|
if ok {
|
|
return WithRequestInfo(c, info.(RequestInfo))
|
|
}
|
|
|
|
return WithRequestInfo(c, RequestInfo{})
|
|
}
|