public static Builder like(Response response) { Builder responseBuilder = new Builder(); responseBuilder.status = response.getStatus(); responseBuilder.bodyStream = response.bodyStreamSource; responseBuilder.headers = response.getHeaders(); responseBuilder.configured = response.wasConfigured(); responseBuilder.fault = response.getFault(); responseBuilder.initialDelay = response.getInitialDelay(); responseBuilder.chunkedDribbleDelay = response.getChunkedDribbleDelay(); responseBuilder.fromProxy = response.isFromProxy(); return responseBuilder; }
public static LoggedResponse from(Response response) { return new LoggedResponse( response.getStatus(), response.getHeaders() == null || response.getHeaders().all().isEmpty() ? null : response.getHeaders(), response.getBody(), response.getFault() ); }
public Response build() { if (bodyBytes != null) { return new Response(status, statusMessage, bodyBytes, headers, configured, fault, initialDelay, chunkedDribbleDelay, fromProxy); } else if (bodyString != null) { return new Response(status, statusMessage, bodyString, headers, configured, fault, initialDelay, chunkedDribbleDelay, fromProxy); } else if (bodyStream != null) { return new Response(status, statusMessage, bodyStream, headers, configured, fault, initialDelay, chunkedDribbleDelay, fromProxy); } else { return new Response(status, statusMessage, new byte[0], headers, configured, fault, initialDelay, chunkedDribbleDelay, fromProxy); } } }
private byte[] bodyDecompressedIfRequired(Response response) { if (response.getHeaders().getHeader("Content-Encoding").containsValue("gzip")) { return Gzip.unGzip(response.getBody()); } return response.getBody(); }
public void applyResponse(Response response, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { Fault fault = response.getFault(); if (fault != null) { FaultInjector faultInjector = buildFaultInjector(httpServletRequest, httpServletResponse); fault.apply(faultInjector); httpServletResponse.addHeader(Fault.class.getName(), fault.name()); return; } if (response.getStatusMessage() == null) { httpServletResponse.setStatus(response.getStatus()); } else { httpServletResponse.setStatus(response.getStatus(), response.getStatusMessage()); } for (HttpHeader header: response.getHeaders().all()) { for (String value: header.values()) { httpServletResponse.addHeader(header.key(), value); } } if (response.shouldAddChunkedDribbleDelay()) { writeAndTranslateExceptionsWithChunkedDribbleDelay(httpServletResponse, response.getBodyStream(), response.getChunkedDribbleDelay()); } else { writeAndTranslateExceptions(httpServletResponse, response.getBodyStream()); } }
static HttpResponse toStyxResponse(Response response) { HttpHeaders headers = toStyxHeaders(response.getHeaders()); byte[] body = response.getBody(); return HttpResponse.response(statusWithCode(response.getStatus())) .headers(headers) .body(body, false) .build(); }
/** * Builds a {@link Response} for the OpenAPI validator out of the * original {@link com.github.tomakehurst.wiremock.http.Response}. * * @param originalResponse the original {@link com.github.tomakehurst.wiremock.http.Response} */ @Nonnull public static Response of(@Nonnull final com.github.tomakehurst.wiremock.http.Response originalResponse) { requireNonNull(originalResponse, "An original response is required"); final SimpleResponse.Builder builder = new SimpleResponse.Builder(originalResponse.getStatus()) .withBody(originalResponse.getBodyAsString()); originalResponse.getHeaders().all().forEach(header -> builder.withHeader(header.key(), header.values())); return builder.build(); } }
private void writeToMappingAndBodyFile(Request request, Response response, RequestPattern requestPattern) { String fileId = idGenerator.generate(); byte[] body = bodyDecompressedIfRequired(response); String mappingFileName = UniqueFilenameGenerator.generate(request.getUrl(), "mapping", fileId); String bodyFileName = UniqueFilenameGenerator.generate( request.getUrl(), "body", fileId, ContentTypes.determineFileExtension( request.getUrl(), response.getHeaders().getContentTypeHeader(), body)); ResponseDefinitionBuilder responseDefinitionBuilder = responseDefinition() .withStatus(response.getStatus()) .withBodyFile(bodyFileName); if (response.getHeaders().size() > 0) { responseDefinitionBuilder.withHeaders(withoutContentEncodingAndContentLength(response.getHeaders())); } ResponseDefinition responseToWrite = responseDefinitionBuilder.build(); StubMapping mapping = new StubMapping(requestPattern, responseToWrite); mapping.setUuid(UUID.nameUUIDFromBytes(fileId.getBytes())); filesFileSource.writeBinaryFile(bodyFileName, body); mappingsFileSource.writeTextFile(mappingFileName, write(mapping)); }
public String getBodyAsString() { return Strings.stringFromBytes(getBody(), headers.getContentTypeHeader().charset()); }
private void respondAsync(final Request request, final Response response) { final AsyncContext asyncContext = httpServletRequest.startAsync(); scheduledExecutorService.schedule(new Runnable() { @Override public void run() { try { respondTo(request, response); } finally { asyncContext.complete(); } } }, response.getInitialDelay(), MILLISECONDS); }
public byte[] getBody() { try (InputStream stream = bodyStreamSource == null ? null : getBodyStream()) { return stream == null ? null : ByteStreams.toByteArray(stream); } catch (IOException e) { throw new RuntimeException(e); } }
private boolean isAsyncSupported(Response response, HttpServletRequest httpServletRequest) { return scheduledExecutorService != null && response.getInitialDelay() > 0 && httpServletRequest.isAsyncSupported(); }
private void respondSync(Request request, Response response) { delayIfRequired(response.getInitialDelay()); respondTo(request, response); }
public static Response notConfigured() { return new Response( HTTP_NOT_FOUND, null, (byte[]) null, noHeaders(), false, null, 0, null, false); }
public ServeEvent complete(Response response, int processTimeMillis) { return new ServeEvent(id, request, stubMapping, responseDefinition, LoggedResponse.from(response), false, new Timing((int) response.getInitialDelay(), processTimeMillis)); }