@Override
public Response render(ServeEvent serveEvent) {
ResponseDefinition responseDefinition = serveEvent.getResponseDefinition();
HttpUriRequest httpRequest = getHttpRequestFor(responseDefinition);
addRequestHeaders(httpRequest, responseDefinition);
try {
addBodyIfPostPutOrPatch(httpRequest, responseDefinition);
HttpResponse httpResponse = client.execute(httpRequest);
return response()
.status(httpResponse.getStatusLine().getStatusCode())
.headers(headersFrom(httpResponse, responseDefinition))
.body(getEntityAsByteArrayAndCloseStream(httpResponse))
.fromProxy(true)
.configureDelay(
globalSettingsHolder.get().getFixedDelay(),
globalSettingsHolder.get().getDelayDistribution(),
responseDefinition.getFixedDelayMilliseconds(),
responseDefinition.getDelayDistribution()
)
.chunkedDribbleDelay(responseDefinition.getChunkedDribbleDelay())
.build();
} catch (IOException e) {
throw new RuntimeException(e);
}
}