/** * @return string representation of this response */ public String toString() { StringBuilder builder = new StringBuilder(); if (getStatusCode() != null) builder.append(String.format("[%s] %s", this.getStatusCode(), this.getStatusText())); builder.append(LINE_SEPARATOR); builder.append(super.toString()); return builder.toString(); }
private boolean isJsonResponse(RestResponse r) { if (ContentType.JSON.equals(ContentType.parse(r.getContentType()))) { return true; } if (r.getBody() != null && r.getBody().trim().matches("\\{.+\\}")) { return Tools.isValidJson(r.getBody()); } return false; }
response = cx.newObject(scope, "JsResponse", arg); scope.put(RESPONSE_OBJ_NAME, scope, response); putPropertyOnJsObject(response, "body", r.getBody()); putPropertyOnJsObject(response, JSON_OBJ_NAME, null); boolean isJson = isJsonResponse(r); if (isJson) { evaluateExpression(cx, scope, RESPONSE_OBJ_NAME + "." + JSON_OBJ_NAME + "=" + r.getBody()); putPropertyOnJsObject(response, "resource", r.getResource()); putPropertyOnJsObject(response, "statusText", r.getStatusText()); putPropertyOnJsObject(response, "statusCode", r.getStatusCode()); putPropertyOnJsObject(response, "transactionId", r.getTransactionId()); for (Header h : r.getHeaders()) { callMethodOnJsObject(response, "addHeader", h.getName(), h.getValue());
RestResponse resp = new RestResponse(); resp.setTransactionId(request.getTransactionId()); resp.setResource(request.getResource()); try { client.executeMethod(m); for (Header h : m.getResponseHeaders()) { resp.addHeader(h.getName(), h.getValue()); resp.setStatusCode(m.getStatusCode()); resp.setStatusText(m.getStatusText()); resp.setRawBody(m.getResponseBody());
@SuppressWarnings({ "rawtypes", "unchecked" }) protected void completeHttpMethodExecution() { String uri = getLastResponse().getResource(); String query = getLastRequest().getQuery(); if (query != null && !"".equals(query.trim())) { uri = uri + "?" + query; } String clientBaseUri = restClient.getBaseUrl(); String u = clientBaseUri + uri; CellWrapper uriCell = row.getCell(1); getFormatter().asLink(uriCell, GLOBALS.substitute(uriCell.body()), u, uri); CellWrapper cellStatusCode = row.getCell(2); if (cellStatusCode == null) { throw new IllegalStateException( "You must specify a status code cell"); } Integer lastStatusCode = getLastResponse().getStatusCode(); process(cellStatusCode, lastStatusCode.toString(), new StatusCodeTypeAdapter()); List<Header> lastHeaders = getLastResponse().getHeaders(); process(row.getCell(3), lastHeaders, new HeadersTypeAdapter()); CellWrapper bodyCell = row.getCell(4); if (bodyCell == null) { throw new IllegalStateException("You must specify a body cell"); } bodyCell.body(GLOBALS.substitute(bodyCell.body())); BodyTypeAdapter bodyTypeAdapter = createBodyTypeAdapter(); process(bodyCell, getLastResponse().getBody(), bodyTypeAdapter); }
@Override public String handle(RunnerVariablesProvider variablesProvider, Config config, RestResponse response, Object expressionContext, String expression) { @SuppressWarnings("unchecked") Map<String, String> namespaceContext = (Map<String, String>) expressionContext; String contentTypeString = response.getContentType(); String charset = response.getCharset(); ContentType contentType = ContentType.parse(contentTypeString); BodyTypeAdapter bodyTypeAdapter = new BodyTypeAdapterFactory(variablesProvider, config) .getBodyTypeAdapter(contentType, charset); String body = bodyTypeAdapter.toXmlString(response.getBody()); if (body == null) { return null; } String val = null; try { NodeList list = Tools.extractXPath(namespaceContext, expression, body); Node item = list.item(0); if (item != null) { val = item.getTextContent(); } } catch (IllegalArgumentException e) { // ignore - may be that it's evaluating to a string val = (String) Tools.extractXPath(namespaceContext, expression, body, XPathConstants.STRING, charset); } if (val != null) { val = val.trim(); } return val; } }
@Override public String handle(RunnerVariablesProvider variablesProvider, Config config, RestResponse response, Object expressionContext, String expression) { return response.getBody(); }
@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; }
protected BodyTypeAdapter createBodyTypeAdapter(ContentType ct) { String charset = getLastResponse().getCharset(); BodyTypeAdapter bodyTypeAdapter = partsFactory.buildBodyTypeAdapter(ct, charset); bodyTypeAdapter.setContext(namespaceContext); return bodyTypeAdapter; }
protected BodyTypeAdapter createBodyTypeAdapter() { return createBodyTypeAdapter(ContentType.parse(getLastResponse() .getContentType())); }
@Override public String handle(RunnerVariablesProvider variablesProvider, Config config, RestResponse response, Object expressionContext, String expression) { @SuppressWarnings("unchecked") Map<String, String> namespaceContext = (Map<String, String>) expressionContext; NodeList list = Tools.extractXPath(namespaceContext, expression, response.getBody()); String val = Tools.xPathResultToXmlString(list); int pos = val.indexOf("?>"); if (pos >= 0) { val = val.substring(pos + 2); } return val; }
public Object evaluateExpression(RestResponse response, String expression, Map<String, String> imports) { if (expression == null) { return null; } Context context = Context.enter(); final String body = response == null ? null : response.getBody(); removeOptimisationForLargeExpressions(body, expression, context); ScriptableObject scope = context.initStandardObjects(); injectImports(context, scope, imports); injectFitNesseSymbolMap(scope); injectResponse(context, scope, response); Object result = evaluateExpression(context, scope, expression); return result; }