in aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletResponseWriter.java [54:86]
public AwsProxyResponse writeResponse(AwsHttpServletResponse containerResponse, Context lambdaContext)
throws InvalidResponseObjectException {
Timer.start("SERVLET_RESPONSE_WRITE");
AwsProxyResponse awsProxyResponse = new AwsProxyResponse();
if (containerResponse.getAwsResponseBodyString() != null) {
String responseString;
if (!isBinary(containerResponse.getContentType()) && isValidUtf8(containerResponse.getAwsResponseBodyBytes())) {
responseString = containerResponse.getAwsResponseBodyString();
} else {
responseString = Base64.getEncoder().encodeToString(containerResponse.getAwsResponseBodyBytes());
awsProxyResponse.setBase64Encoded(true);
}
awsProxyResponse.setBody(responseString);
}
awsProxyResponse.setMultiValueHeaders(containerResponse.getAwsResponseHeaders());
if (writeSingleValueHeaders) {
awsProxyResponse.setHeaders(toSingleValueHeaders(containerResponse.getAwsResponseHeaders()));
}
awsProxyResponse.setStatusCode(containerResponse.getStatus());
Status responseStatus = Response.Status.fromStatusCode(containerResponse.getStatus());
if (containerResponse.getAwsProxyRequest() != null && containerResponse.getAwsProxyRequest().getRequestSource() == RequestSource.ALB
&& responseStatus != null) {
awsProxyResponse.setStatusDescription(containerResponse.getStatus() + " " + responseStatus.getReasonPhrase());
}
Timer.stop("SERVLET_RESPONSE_WRITE");
return awsProxyResponse;
}