hi-server/internal/middleware/apiVersionMiddleware.go
shanshanzhong 3b4e882965
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m37s
feat: 根据 X-App-Id 判断是否裁剪套餐列表,老版客户端去掉最后一个
2026-03-28 23:21:00 -07:00

28 lines
859 B
Go

package middleware
import (
"context"
"strings"
"github.com/gin-gonic/gin"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/pkg/apiversion"
"github.com/perfect-panel/server/pkg/constant"
)
func ApiVersionMiddleware(_ *svc.ServiceContext) func(c *gin.Context) {
return func(c *gin.Context) {
rawVersion := strings.TrimSpace(c.GetHeader("api-header"))
useLatest := apiversion.UseLatest(rawVersion, apiversion.DefaultThreshold)
hasAppId := strings.TrimSpace(c.GetHeader("X-App-Id")) != ""
ctx := context.WithValue(c.Request.Context(), constant.CtxKeyAPIVersionUseLatest, useLatest)
ctx = context.WithValue(ctx, constant.CtxKeyAPIHeaderRaw, rawVersion)
ctx = context.WithValue(ctx, constant.CtxKeyHasAppId, hasAppId)
c.Request = c.Request.WithContext(ctx)
c.Set("api_header", rawVersion)
c.Next()
}
}