Skip to content
This repository was archived by the owner on Sep 22, 2022. It is now read-only.

Commit 6e778bf

Browse files
committed
closes #25
1 parent 98d2918 commit 6e778bf

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/main/java/io/adven/grpc/wiremock/HeaderPropagationInterceptor.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.adven.grpc.wiremock;
22

3+
import com.google.common.io.BaseEncoding;
34
import io.grpc.Context;
45
import io.grpc.Contexts;
56
import io.grpc.Metadata;
@@ -10,12 +11,15 @@
1011
import java.util.Map;
1112

1213
import static io.grpc.Metadata.ASCII_STRING_MARSHALLER;
14+
import static io.grpc.Metadata.BINARY_BYTE_MARSHALLER;
15+
import static io.grpc.Metadata.BINARY_HEADER_SUFFIX;
1316
import static io.grpc.Metadata.Key.of;
1417
import static java.util.function.Function.identity;
1518
import static java.util.stream.Collectors.toMap;
1619

1720
public class HeaderPropagationInterceptor implements ServerInterceptor {
1821
public static final Context.Key<Map<String, String>> HEADERS = Context.key("GRPC_WIREMOCK_HEADERS");
22+
private static final BaseEncoding BASE64_ENCODING_OMIT_PADDING = BaseEncoding.base64().omitPadding();
1923

2024
@Override
2125
public <Req, Resp> ServerCall.Listener<Req> interceptCall(ServerCall<Req, Resp> call, final Metadata headers, ServerCallHandler<Req, Resp> next) {
@@ -28,6 +32,13 @@ public <Req, Resp> ServerCall.Listener<Req> interceptCall(ServerCall<Req, Resp>
2832
}
2933

3034
private Map<String, String> asMap(Metadata headers) {
31-
return headers.keys().stream().collect(toMap(identity(), k -> headers.get(of(k, ASCII_STRING_MARSHALLER))));
35+
return headers.keys().stream().collect(
36+
toMap(
37+
identity(),
38+
k -> k.endsWith(BINARY_HEADER_SUFFIX)
39+
? BASE64_ENCODING_OMIT_PADDING.encode(headers.get(of(k, BINARY_BYTE_MARSHALLER)))
40+
: headers.get(of(k, ASCII_STRING_MARSHALLER))
41+
)
42+
);
3243
}
3344
}

0 commit comments

Comments
 (0)