...
1 package middleware
2
3 import (
4 "fmt"
5 "net/http"
6
7 "edge-infra.dev/pkg/edge/client"
8 "edge-infra.dev/pkg/lib/runtime/version"
9
10 "github.com/gin-gonic/gin"
11 comp "github.com/hashicorp/go-version"
12 )
13
14
15 func CheckVersion() gin.HandlerFunc {
16 return func(c *gin.Context) {
17 clientVersion, err := comp.NewVersion(c.GetHeader(client.EdgeVersion))
18 if err == nil {
19 serverVersion, err := comp.NewVersion(version.New().SemVer)
20 if err == nil && serverVersion.LessThan(clientVersion) {
21 errMsg := fmt.Sprintf("client version %s incompatible with server version %s", clientVersion, serverVersion)
22 c.String(http.StatusBadRequest, errMsg)
23 return
24 }
25 }
26 c.Next()
27 }
28 }
29
View as plain text