feat: 0.0.1
This commit is contained in:
146 files changed
+10444
No files matched your search
@@ -0,0 +1,42 @@
|
||||
package gapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"google.golang.org/grpc/metadata"
|
||||
"google.golang.org/grpc/peer"
|
||||
)
|
||||
|
||||
const (
|
||||
grpcGatewayUserAgentHeader = "grpcgateway-user-agent"
|
||||
userAgentHeader = "user-agent"
|
||||
xForwardedForHeader = "x-forwarded-for"
|
||||
)
|
||||
|
||||
type Metadata struct {
|
||||
UserAgent string
|
||||
ClientIP string
|
||||
}
|
||||
|
||||
func (s *Server) extractMetadata(ctx context.Context) *Metadata {
|
||||
mtdt := Metadata{}
|
||||
|
||||
md, ok := metadata.FromIncomingContext(ctx)
|
||||
if ok {
|
||||
if userAgent := md.Get(grpcGatewayUserAgentHeader); len(userAgent) > 0 {
|
||||
mtdt.UserAgent = userAgent[0]
|
||||
}
|
||||
if userAgent := md.Get(userAgentHeader); len(userAgent) > 0 {
|
||||
mtdt.UserAgent = userAgent[0]
|
||||
}
|
||||
if clientIPs := md.Get(xForwardedForHeader); len(clientIPs) > 0 {
|
||||
mtdt.ClientIP = clientIPs[0]
|
||||
}
|
||||
}
|
||||
|
||||
if p, ok := peer.FromContext(ctx); ok {
|
||||
mtdt.ClientIP = p.Addr.String()
|
||||
}
|
||||
|
||||
return &mtdt
|
||||
}
|
||||
Reference in new issue
Block a user