public HttpHeaders(Iterable<HttpHeader> headers) { ImmutableMultimap.Builder<CaseInsensitiveKey, String> builder = ImmutableMultimap.builder(); for (HttpHeader header: firstNonNull(headers, Collections.<HttpHeader>emptyList())) { builder.putAll(caseInsensitive(header.key()), header.values()); } this.headers = builder.build(); }
@Override public HttpHeader apply(HttpHeader input) { List<String> newValues = Lists.transform(input.values(), new Function<String, String>() { @Override public String apply(String input) { Template template = uncheckedCompileTemplate(input); return uncheckedApplyTemplate(template, model); } }); return new HttpHeader(input.key(), newValues); } });
@Override public ListOrSingle<String> apply(String input) { return ListOrSingle.of(request.header(input).values()); } });
@Override public boolean authenticate(Request request) { HttpHeader requestHeader = request.header(key); if (requestHeader == null || !requestHeader.isPresent()) { return false; } List<String> headerValues = requestHeader.values(); return request.containsHeader(AUTHORIZATION) && headerValues.contains(value); } }
@Override public void serialize(HttpHeaders headers, JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeStartObject(); for (HttpHeader header: headers.all()) { if (header.isSingleValued()) { jgen.writeStringField(header.key(), header.firstValue()); } else { jgen.writeArrayFieldStart(header.key()); for (String value: header.values()) { jgen.writeString(value); } jgen.writeEndArray(); } } jgen.writeEndObject(); } }
private static HttpHeaders toStyxHeaders(com.github.tomakehurst.wiremock.http.HttpHeaders headers) { HttpHeaders.Builder builder = new HttpHeaders.Builder(); if (headers != null) { headers.all().forEach(header -> builder.add(header.key(), header.values())); } return builder.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(); } }
/** * Builds a {@link Request} for the OpenAPI validator out of the * original {@link com.github.tomakehurst.wiremock.http.Request}. * * @param originalRequest the original {@link com.github.tomakehurst.wiremock.http.Request} */ @Nonnull public static Request of(@Nonnull final com.github.tomakehurst.wiremock.http.Request originalRequest) { requireNonNull(originalRequest, "An original request is required"); final URI uri = URI.create(originalRequest.getUrl()); final Map<String, QueryParameter> queryParameterMap = Urls.splitQuery(uri); final SimpleRequest.Builder builder = new SimpleRequest.Builder(originalRequest.getMethod().getName(), uri.getPath()) .withBody(originalRequest.getBodyAsString()); originalRequest.getHeaders().all().forEach(header -> builder.withHeader(header.key(), header.values())); queryParameterMap.forEach((key, value) -> builder.withQueryParam(key, value.values())); return builder.build(); } }
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()); } }
private String safelyExecuteRequest(String url, HttpUriRequest request) { if (hostHeader != null) { request.addHeader(HOST, hostHeader); } List<HttpHeader> httpHeaders = authenticator.generateAuthHeaders(); for (HttpHeader header: httpHeaders) { for (String value: header.values()) { request.addHeader(header.key(), value); } } try (CloseableHttpResponse response = httpClient.execute(request)) { int statusCode = response.getStatusLine().getStatusCode(); if (HttpStatus.isServerError(statusCode)) { throw new VerificationException( "Expected status 2xx for " + url + " but was " + statusCode); } if (statusCode == 401) { throw new NotAuthorisedException(); } String body = getEntityAsStringAndCloseStream(response); if (HttpStatus.isClientError(statusCode)) { Errors errors = Json.read(body, Errors.class); throw ClientError.fromErrors(errors); } return body; } catch (Exception e) { return throwUnchecked(e, String.class); } }
private void addRequestHeaders(HttpRequest httpRequest, ResponseDefinition response) { Request originalRequest = response.getOriginalRequest(); for (String key: originalRequest.getAllHeaderKeys()) { if (headerShouldBeTransferred(key)) { if (!HOST_HEADER.equalsIgnoreCase(key) || preserveHostHeader) { List<String> values = originalRequest.header(key).values(); for (String value: values) { httpRequest.addHeader(key, value); } } else { if (hostHeaderValue != null) { httpRequest.addHeader(key, hostHeaderValue); } else if (response.getProxyBaseUrl() != null) { httpRequest.addHeader(key, URI.create(response.getProxyBaseUrl()).getAuthority()); } } } } if (response.getAdditionalProxyRequestHeaders() != null) { for (String key: response.getAdditionalProxyRequestHeaders().keys()) { httpRequest.setHeader(key, response.getAdditionalProxyRequestHeaders().getHeader(key).firstValue()); } } }