You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
570 B
25 lines
570 B
2 years ago
|
package middleware
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"google.golang.org/grpc/metadata"
|
||
|
)
|
||
|
|
||
|
func AddHeaderMdMiddle(c *gin.Context) Middleware {
|
||
|
return func(handler Handler) Handler {
|
||
|
return func(ctx context.Context, a any) (any, error) {
|
||
|
headers := metadata.MD{}
|
||
|
headers1 := c.Request.Header.Clone()
|
||
|
for k, v := range headers1 {
|
||
|
headers.Set(k, v[0])
|
||
|
}
|
||
|
headers["remote_ip"] = []string{c.RemoteIP()}
|
||
|
headers["full_path"] = []string{c.FullPath()}
|
||
|
ctx = metadata.NewIncomingContext(ctx, headers)
|
||
|
|
||
|
return handler(ctx, a)
|
||
|
}
|
||
|
}
|
||
|
}
|