fix transfer

pull/903/head
seanyu 3 years ago
parent 8b844b3fdc
commit 29ed1031f6

@ -59,7 +59,6 @@ public class EncodeTransferMedataWebClientFilter implements ExchangeFilterFuncti
ClientRequest request = requestBuilder.build();
TransHeadersTransfer.transfer(request);
return next.exchange(request);
}

@ -32,7 +32,6 @@ import com.tencent.cloud.common.util.JacksonUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.util.CollectionUtils;
import org.springframework.web.reactive.function.client.ClientRequest;
/**
* According to request and trans-headers(key list in string type) in metadata, build
@ -97,30 +96,4 @@ public final class TransHeadersTransfer {
}
}
}
/**
* According to {@link ClientRequest} and trans-headers(key list in string type) in metadata, build
* the complete headers(key-value list in map type) into metadata.
* @param clientRequest clientRequest
*/
public static void transfer(ClientRequest clientRequest) {
// transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}}
Map<String, String> transHeaderMetadata = MetadataContextHolder.get().getTransHeaders();
if (!CollectionUtils.isEmpty(transHeaderMetadata)) {
String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse("");
String[] transHeaderArray = transHeaders.split(",");
HttpHeaders headers = clientRequest.headers();
Set<String> headerKeys = headers.keySet();
for (String httpHeader : headerKeys) {
Arrays.stream(transHeaderArray).forEach(transHeader -> {
if (transHeader.equals(httpHeader)) {
List<String> list = headers.get(httpHeader);
String httpHeaderValue = JacksonUtils.serialize2Json(list);
// for example, {"trans-headers-kv" : {"header1":"v1","header2":"v2"...}}
MetadataContextHolder.get().setTransHeadersKV(httpHeader, httpHeaderValue);
}
});
}
}
}
}

@ -18,8 +18,6 @@
package com.tencent.cloud.metadata.core;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
import com.tencent.cloud.common.metadata.MetadataContext;
@ -30,11 +28,9 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpMethod;
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.web.reactive.function.client.ClientRequest;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
@ -87,23 +83,4 @@ public class TransHeadersTransferTest {
assertThat(transHeadersKV.get("header2")).isEqualTo(JacksonUtils.serialize2Json(header2));
assertThat(transHeadersKV.get("header3")).isEqualTo(JacksonUtils.serialize2Json(header3));
}
@Test
public void transferWebClientTest() throws URISyntaxException {
MetadataContext metadataContext = MetadataContextHolder.get();
metadataContext.setTransHeaders("header1,header2,header3", "");
ClientRequest.Builder builder = ClientRequest.create(HttpMethod.GET, new URI(""));
String[] header1 = {"1"};
String[] header2 = {"2"};
String[] header3 = {"3"};
builder.header("header1", header1);
builder.header("header2", header2);
builder.header("header3", header3);
ClientRequest request = builder.build();
TransHeadersTransfer.transfer(request);
Map<String, String> transHeadersKV = MetadataContextHolder.get().getTransHeadersKV();
assertThat(transHeadersKV.get("header1")).isEqualTo(JacksonUtils.serialize2Json(header1));
assertThat(transHeadersKV.get("header2")).isEqualTo(JacksonUtils.serialize2Json(header2));
assertThat(transHeadersKV.get("header3")).isEqualTo(JacksonUtils.serialize2Json(header3));
}
}

Loading…
Cancel
Save