@Override public Object parse(String s) throws Exception { // parses a cell content as a map of headers. // syntax is name:value\n* List<Header> expected = new ArrayList<Header>(); if (!"".equals(s.trim())) { String expStr = Tools.fromHtml(s.trim()); String[] nvpArray = expStr.split("\n"); for (String nvp : nvpArray) { try { String[] nvpEl = nvp.split(":", 2); expected.add(new Header(nvpEl[0].trim(), nvpEl[1].trim())); } catch (RuntimeException e) { throw new IllegalArgumentException("Each entry in the must be separated by \\n and each entry must be expressed as a name:value"); } } } return expected; }
@Override public String handle(RunnerVariablesProvider variablesProvider, Config config, RestResponse response, Object expressionContext, String expression) { List<String> content = new ArrayList<String>(); if (response != null) { for (Header e : response.getHeaders()) { String string = Tools.convertEntryToString(e.getName(), e.getValue(), ":"); content.add(string); } } String value = null; if (content.size() > 0) { Pattern p = Pattern.compile(expression); for (String c : content) { Matcher m = p.matcher(c); if (m.find()) { int cc = m.groupCount(); value = m.group(cc); break; } } } return value; }
@Override @SuppressWarnings("unchecked") public boolean equals(Object expectedObj, Object actualObj) { if (expectedObj == null || actualObj == null) { return false; } // r1 and r2 are Map<String, String> containing either the header // from the HTTP response or the data value in the expected cell // equals checks for r1 being a subset of r2 Collection<Header> expected = (Collection<Header>) expectedObj; Collection<Header> actual = (Collection<Header>) actualObj; for (Header k : expected) { Header aHdr = find(actual, k); if (aHdr == null) { addError("not found: [" + k.getName() + " : " + k.getValue() + "]"); } } return getErrors().size() == 0; }
/** * * @param name * the header name * @return the sub-list of headers with the same name */ public List<Header> getHeader(String name) { List<Header> headersWithTheSameName = new ArrayList<Header>(); for (Header h : headers) { if (h.getName().equalsIgnoreCase(name)) { headersWithTheSameName.add(h); } } return headersWithTheSameName; }
/** * Adds an HTTP header to the current list. * * @param name * the header name * @param value * the header value * @return this RestData */ public RestData addHeader(String name, String value) { this.headers.add(new Header(name, value)); return this; }
public String getHeaderValue(String name) { List<Header> headers = getHeader(name); if(headers.size() > 0) { return headers.get(0).getValue(); } return null; }
public String getContentType() { List<smartrics.rest.client.RestData.Header> values = request.getHeader("Content-Type"); String v = "text/xml"; if (values.size() != 0) v = values.get(0).getValue(); return v; } };
public String getContentType(RestRequest request) { List<smartrics.rest.client.RestData.Header> values = request.getHeader("Content-Type"); String v = "text/xml"; if (values.size() != 0) v = values.get(0).getValue(); return v; }