@Override public String toString() { return "Body {" + "content=" + asString() + ", binary=" + binary + '}'; } }
public String getBody() { return !body.isBinary() ? body.asString() : null; }
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()); } }
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(); }