hi-server/internal/middleware/apiVersionMiddleware.go
shanshanzhong a01570b59d
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 8m21s
fix gitea workflow path and runner label
2026-03-04 06:33:14 -08:00

26 lines
730 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)
ctx := context.WithValue(c.Request.Context(), constant.CtxKeyAPIVersionUseLatest, useLatest)
ctx = context.WithValue(ctx, constant.CtxKeyAPIHeaderRaw, rawVersion)
c.Request = c.Request.WithContext(ctx)
c.Set("api_header", rawVersion)
c.Next()
}
}