in aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/testutils/AwsProxyRequestBuilder.java [452:536]
public HttpApiV2ProxyRequest toHttpApiV2Request() {
HttpApiV2ProxyRequest req = new HttpApiV2ProxyRequest();
req.setRawPath(request.getPath());
req.setBase64Encoded(request.isBase64Encoded());
req.setBody(request.getBody());
if (request.getMultiValueHeaders() != null && request.getMultiValueHeaders().containsKey(HttpHeaders.COOKIE)) {
req.setCookies(Arrays.asList(request.getMultiValueHeaders().getFirst(HttpHeaders.COOKIE).split(";")));
}
req.setHeaders(new TreeMap<>(String.CASE_INSENSITIVE_ORDER));
if (request.getMultiValueHeaders() != null) {
request.getMultiValueHeaders().forEach((key, value) -> req.getHeaders().put(key, value.get(0)));
}
if (request.getRequestContext() != null && request.getRequestContext().getIdentity() != null) {
if (request.getRequestContext().getIdentity().getCaller() != null) {
req.getHeaders().put("Referer", request.getRequestContext().getIdentity().getCaller());
}
if (request.getRequestContext().getIdentity().getUserAgent() != null) {
req.getHeaders().put(HttpHeaders.USER_AGENT, request.getRequestContext().getIdentity().getUserAgent());
}
}
if (request.getMultiValueQueryStringParameters() != null) {
StringBuilder rawQueryString = new StringBuilder();
request.getMultiValueQueryStringParameters().forEach((k, v) -> {
for (String s : v) {
rawQueryString.append("&");
rawQueryString.append(k);
rawQueryString.append("=");
try {
// same terrible hack as the alb() method. Because our spring tests use commas as control characters
// we do not encode it
rawQueryString.append(URLEncoder.encode(s, "UTF-8").replaceAll("%2C", ","));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
});
String qs = rawQueryString.toString();
if (qs.length() > 1) {
req.setRawQueryString(qs.substring(1));
}
}
req.setRouteKey("$default");
req.setVersion("2.0");
req.setStageVariables(request.getStageVariables());
HttpApiV2ProxyRequestContext ctx = new HttpApiV2ProxyRequestContext();
HttpApiV2HttpContext httpCtx = new HttpApiV2HttpContext();
httpCtx.setMethod(request.getHttpMethod());
httpCtx.setPath(request.getPath());
httpCtx.setProtocol("HTTP/1.1");
if (request.getRequestContext() != null && request.getRequestContext().getIdentity() != null && request.getRequestContext().getIdentity().getSourceIp() != null) {
httpCtx.setSourceIp(request.getRequestContext().getIdentity().getSourceIp());
} else {
httpCtx.setSourceIp("127.0.0.1");
}
if (request.getRequestContext() != null && request.getRequestContext().getIdentity() != null && request.getRequestContext().getIdentity().getUserAgent() != null) {
httpCtx.setUserAgent(request.getRequestContext().getIdentity().getUserAgent());
}
ctx.setHttp(httpCtx);
if (request.getRequestContext() != null) {
ctx.setAccountId(request.getRequestContext().getAccountId());
ctx.setApiId(request.getRequestContext().getApiId());
ctx.setDomainName(request.getRequestContext().getApiId() + ".execute-api.us-east-1.apigateway.com");
ctx.setDomainPrefix(request.getRequestContext().getApiId());
ctx.setRequestId(request.getRequestContext().getRequestId());
ctx.setRouteKey("$default");
ctx.setStage(request.getRequestContext().getStage());
ctx.setTimeEpoch(request.getRequestContext().getRequestTimeEpoch());
ctx.setTime(request.getRequestContext().getRequestTime());
if (request.getRequestContext().getAuthorizer() != null) {
HttpApiV2AuthorizerMap auth = new HttpApiV2AuthorizerMap();
HttpApiV2JwtAuthorizer jwt = new HttpApiV2JwtAuthorizer();
// TODO: Anything we should map here?
jwt.setClaims(new HashMap<>());
jwt.setScopes(new ArrayList<>());
auth.putJwtAuthorizer(jwt);
ctx.setAuthorizer(auth);
}
}
req.setRequestContext(ctx);
return req;
}