Files
paralus/components/common/pkg/gateway/annotator.go
2021-12-28 14:23:52 +05:30

43 lines
1.1 KiB
Go

package gateway
import (
"context"
"net/http"
"google.golang.org/grpc/metadata"
)
// Rafay Gateway annotations
const (
GatewayRequest = "rafay-gateway-request"
GatewayURL = "rafay-gateway-url"
GatewayRSID = "rafay-gateway-rsid"
GatewayAPIKey = "rafay-gateway-apikey"
GatewayMethod = "rafay-gateway-method"
rafaySessionCookie = "rsid"
rafayAPIKeyHeader = "X-RAFAY-API-KEYID"
UserAgent = "rafay-gateway-user-agent"
Host = "rafay-gateway-host"
RemoteAddr = "rafay-gateway-remote-addr"
)
// rafayGatewayAnnotator adds rafay gateway specific annotations
var rafayGatewayAnnotator = func(ctx context.Context, r *http.Request) metadata.MD {
return metadata.New(map[string]string{
GatewayRequest: "true",
GatewayURL: r.URL.EscapedPath(),
GatewayRSID: func() string {
sid, err := r.Cookie(rafaySessionCookie)
if err != nil {
return ""
}
return sid.Value
}(),
GatewayAPIKey: r.Header.Get(rafayAPIKeyHeader),
GatewayMethod: r.Method,
UserAgent: r.UserAgent(),
Host: r.Host,
RemoteAddr: r.RemoteAddr,
})
}