From a5a6f3cd023169521378e99a5d5602e730aaf328 Mon Sep 17 00:00:00 2001 From: "Philip I. Thomas" Date: Sat, 15 Oct 2016 21:36:04 -0700 Subject: [PATCH 1/3] runtime - export prefix constants Some clients that map HTTP to GRPC requests (e.g. for tracing purposes) need to know how this library maps HTTP requests to gRPC requests. Rather than hardcoding it in their code, I think that users should be able to import this variable so that future gprc-gateway changes do not (transparently) break this functionality. --- runtime/context.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/context.go b/runtime/context.go index ad42535662a..8549e891234 100644 --- a/runtime/context.go +++ b/runtime/context.go @@ -15,8 +15,8 @@ import ( "google.golang.org/grpc/metadata" ) -const metadataHeaderPrefix = "Grpc-Metadata-" -const metadataTrailerPrefix = "Grpc-Trailer-" +const MetadataHeaderPrefix = "Grpc-Metadata-" +const MetadataTrailerPrefix = "Grpc-Trailer-" const metadataGrpcTimeout = "Grpc-Timeout" const xForwardedFor = "X-Forwarded-For" @@ -52,8 +52,8 @@ func AnnotateContext(ctx context.Context, req *http.Request) (context.Context, e pairs = append(pairs, "authorization", val) continue } - if strings.HasPrefix(key, metadataHeaderPrefix) { - pairs = append(pairs, key[len(metadataHeaderPrefix):], val) + if strings.HasPrefix(key, MetadataHeaderPrefix) { + pairs = append(pairs, key[len(MetadataHeaderPrefix):], val) } } } From 77dd80eb8c136e714a6a47881714c4af02185c92 Mon Sep 17 00:00:00 2001 From: "Philip I. Thomas" Date: Sat, 15 Oct 2016 22:03:00 -0700 Subject: [PATCH 2/3] runtime - fix broken unit test --- runtime/handler.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime/handler.go b/runtime/handler.go index bafa4285f91..d7040851ae9 100644 --- a/runtime/handler.go +++ b/runtime/handler.go @@ -67,7 +67,7 @@ func ForwardResponseStream(ctx context.Context, marshaler Marshaler, w http.Resp func handleForwardResponseServerMetadata(w http.ResponseWriter, md ServerMetadata) { for k, vs := range md.HeaderMD { - hKey := fmt.Sprintf("%s%s", metadataHeaderPrefix, k) + hKey := fmt.Sprintf("%s%s", MetadataHeaderPrefix, k) for i := range vs { w.Header().Add(hKey, vs[i]) } @@ -76,14 +76,14 @@ func handleForwardResponseServerMetadata(w http.ResponseWriter, md ServerMetadat func handleForwardResponseTrailerHeader(w http.ResponseWriter, md ServerMetadata) { for k := range md.TrailerMD { - tKey := textproto.CanonicalMIMEHeaderKey(fmt.Sprintf("%s%s", metadataTrailerPrefix, k)) + tKey := textproto.CanonicalMIMEHeaderKey(fmt.Sprintf("%s%s", MetadataTrailerPrefix, k)) w.Header().Add("Trailer", tKey) } } func handleForwardResponseTrailer(w http.ResponseWriter, md ServerMetadata) { for k, vs := range md.TrailerMD { - tKey := fmt.Sprintf("%s%s", metadataTrailerPrefix, k) + tKey := fmt.Sprintf("%s%s", MetadataTrailerPrefix, k) for i := range vs { w.Header().Add(tKey, vs[i]) } From 8cdebec7dc0e62ba5a8faf8d7da31f052e2fc92d Mon Sep 17 00:00:00 2001 From: "Philip I. Thomas" Date: Sun, 16 Oct 2016 21:57:30 -0700 Subject: [PATCH 3/3] Fix linting --- runtime/context.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/runtime/context.go b/runtime/context.go index 8549e891234..f248c738b23 100644 --- a/runtime/context.go +++ b/runtime/context.go @@ -15,7 +15,11 @@ import ( "google.golang.org/grpc/metadata" ) +// MetadataHeaderPrefix is prepended to HTTP headers in order to convert them to +// gRPC metadata for incoming requests processed by grpc-gateway const MetadataHeaderPrefix = "Grpc-Metadata-" +// MetadataTrailerPrefix is prepended to gRPC metadata as it is converted to +// HTTP headers in a response handled by grpc-gateway const MetadataTrailerPrefix = "Grpc-Trailer-" const metadataGrpcTimeout = "Grpc-Timeout"