private static String formatIfJsonOrXml(ContentPattern<?> pattern, Body body) { if (body == null || body.isAbsent()) { return ""; } try { return pattern.getClass().equals(EqualToJsonPattern.class) ? Json.prettyPrint(body.asString()) : pattern.getClass().equals(EqualToXmlPattern.class) ? Xml.prettyPrint(body.asString()) : pattern.getClass().equals(BinaryEqualToPattern.class) ? body.asBase64(): body.asString(); } catch (Exception e) { return body.asString(); } }
private static MatchResult matchBody(Request.Part part, ContentPattern<?> bodyPattern) { Body body = part.getBody(); if (body == null) { return MatchResult.noMatch(); } if (BinaryEqualToPattern.class.isAssignableFrom(bodyPattern.getClass())) { return ((BinaryEqualToPattern) bodyPattern).match(body.asBytes()); } return ((StringValuePattern) bodyPattern).match(body.asString()); } }
public static Body none() { return new Body((byte[]) null); }
public boolean isPresent() { return !isAbsent(); }
public ResponseDefinition(int status, String statusMessage, byte[] body, JsonNode jsonBody, String base64Body, String bodyFileName, HttpHeaders headers, HttpHeaders additionalProxyRequestHeaders, Integer fixedDelayMilliseconds, DelayDistribution delayDistribution, ChunkedDribbleDelay chunkedDribbleDelay, String proxyBaseUrl, Fault fault, List<String> transformers, Parameters transformerParameters, Boolean wasConfigured) { this(status, statusMessage, Body.fromOneOf(body, null, jsonBody, base64Body), bodyFileName, headers, additionalProxyRequestHeaders, fixedDelayMilliseconds, delayDistribution, chunkedDribbleDelay, proxyBaseUrl, fault, transformers, transformerParameters, wasConfigured); }
@Override public String toString() { return "Body {" + "content=" + asString() + ", binary=" + binary + '}'; } }
@JsonIgnore public boolean specifiesBodyContent() { return body.isPresent(); }
@JsonIgnore public byte[] getByteBody() { return body.asBytes(); }
public ResponseDefinition(final int statusCode, final String bodyContent) { this(statusCode, null, Body.fromString(bodyContent), null, null, null, null, null, null, null, null, Collections.<String>emptyList(), Parameters.empty(), true); }
public ResponseDefinition(final int statusCode, final byte[] bodyContent) { this(statusCode, null, Body.fromBytes(bodyContent), null, null, null, null, null, null, null, null, Collections.<String>emptyList(), Parameters.empty(), true); }
private MultipartValuePattern valuePatternForPart(Request.Part part) { MultipartValuePatternBuilder builder = new MultipartValuePatternBuilder().withName(part.getName()).matchingType(MultipartValuePattern.MatchingType.ALL); if (!headersToMatch.isEmpty()) { Collection<HttpHeader> all = part.getHeaders().all(); for (HttpHeader httpHeader : all) { if (headersToMatch.contains(httpHeader.caseInsensitiveKey())) { builder.withHeader(httpHeader.key(), equalTo(httpHeader.firstValue())); } } } HttpHeader contentType = part.getHeader("Content-Type"); if (!contentType.isPresent() || contentType.firstValue().contains("text")) { builder.withBody(equalTo(part.getBody().asString())); } else if (contentType.firstValue().contains("json")) { builder.withBody(equalToJson(part.getBody().asString(), true, true)); } else if (contentType.firstValue().contains("xml")) { builder.withBody(equalToXml(part.getBody().asString())); } else { builder.withBody(binaryEqualTo(part.getBody().asBytes())); } return builder.build(); }
public static Body ofBinaryOrText(byte[] content, ContentTypeHeader contentTypeHeader) { return new Body(content, ContentTypes.determineIsTextFromMimeType(contentTypeHeader.mimeTypePart())); }
@JsonIgnore public boolean specifiesBodyFile() { return bodyFileName != null && body.isAbsent(); }
@JsonProperty("transformerParameters") Parameters transformerParameters, @JsonProperty("fromConfiguredStub") Boolean wasConfigured) { this(status, statusMessage, Body.fromOneOf(null, body, jsonBody, base64Body), bodyFileName, headers, additionalProxyRequestHeaders, fixedDelayMilliseconds, delayDistribution, chunkedDribbleDelay, proxyBaseUrl, fault, transformers, transformerParameters, wasConfigured);