public static KnotContext empty(String template) { return new KnotContext() .setClientResponse( new ClientResponse() .setBody(StringUtils.isEmpty(template) ? Buffer.buffer() : Buffer.buffer(template)) .setStatusCode(HttpResponseStatus.OK.code()) .setHeaders(MultiMap.caseInsensitiveMultiMap())) .setClientRequest(new ClientRequest()); }
public static void toJson(ClientResponse obj, JsonObject json) { if (obj.getBody() != null) { json.put("body", obj.getBody().getBytes()); } if (obj.getJsonHeaders() != null) { json.put("jsonHeaders", obj.getJsonHeaders()); } json.put("statusCode", obj.getStatusCode()); } }
private KnotContext errorKnotResponse(ClientResponse clientResponse, KnotContext knotContext, FormEntity form) { knotContext.getClientResponse() .setStatusCode(clientResponse.getStatusCode()) .setHeaders(getFilteredHeaders(clientResponse.getHeaders(), form.adapter().getAllowedResponseHeadersPatterns())) .setBody(Buffer.buffer()); knotContext.clearFragments(); return knotContext; }
private ClientResponse toInternalError() { return new ClientResponse().setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); }
/** * Method generates error {@link FormsAdapterResponse} in case of processing failure. * * @param error - error that occurred. * @return - error response (e.g. with 500 status code and other info). */ protected FormsAdapterResponse getErrorResponse(Throwable error) { return new FormsAdapterResponse().setResponse(new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()) .setBody(Buffer.buffer(error.getMessage()))); } }
private FormsAdapterResponse prepareResponse(ClientResponse response) { FormsAdapterResponse result = new FormsAdapterResponse(); if (response.getStatusCode() == HttpResponseStatus.OK.code()) { if (isJsonBody(response.getBody()) && response.getBody().toJsonObject() .containsKey("validationErrors")) { result.setSignal("error"); } else { result.setSignal("success"); } } result.setResponse(response); return result; }
private void endResponse(ClientResponse repoResponse, RoutingContext context) { writeHeaders(context.response(), repoResponse.getHeaders()); context.response().setStatusCode(repoResponse.getStatusCode()); if (repoResponse.getBody() != null) { context.response().end(Buffer.newInstance(repoResponse.getBody())); } else { context.response().end(); } }
@Override protected Single<KnotContext> processRequest(KnotContext knotContext) { try { knotContext .setFragments(splitter.split(knotContext.getClientResponse().getBody().toString())); knotContext.getClientResponse().setStatusCode(HttpResponseStatus.OK.code()).clearBody(); return Single.just(knotContext); } catch (Exception ex) { LOGGER.error("Exception happened during HTML splitting.", ex); return Single.just(processError(knotContext, ex)); } }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { HttpResponseStatus statusCode; if (error instanceof NoSuchElementException) { statusCode = HttpResponseStatus.NOT_FOUND; } else { statusCode = HttpResponseStatus.INTERNAL_SERVER_ERROR; } knotContext.getClientResponse().setStatusCode(statusCode.code()); return knotContext; } }
private KnotContext redirectKnotResponse(KnotContext knotContext, FormEntity form, ClientResponse clientResponse, String redirectLocation) { LOGGER.debug("Request redirected to [{}]", redirectLocation); knotContext.getClientResponse() .setStatusCode(HttpResponseStatus.MOVED_PERMANENTLY.code()); MultiMap headers = MultiMap.caseInsensitiveMultiMap(); headers.addAll(getFilteredHeaders(clientResponse.getHeaders(), form.adapter().getAllowedResponseHeadersPatterns())); headers.add(HttpHeaders.LOCATION.toString(), redirectLocation); knotContext.getClientResponse().setHeaders(headers); knotContext.clearFragments(); return knotContext; }
public static void fromJson(JsonObject json, ClientResponse obj) { if (json.getValue("body") instanceof String) { obj.setBody(io.vertx.core.buffer.Buffer.buffer(java.util.Base64.getDecoder().decode((String)json.getValue("body")))); } if (json.getValue("jsonHeaders") instanceof JsonObject) { obj.setJsonHeaders(((JsonObject)json.getValue("jsonHeaders")).copy()); } if (json.getValue("statusCode") instanceof Number) { obj.setStatusCode(((Number)json.getValue("statusCode")).intValue()); } }
public static KnotContext create(List<Pair<List<String>, String>> fragments) { return new KnotContext() .setFragments( fragments != null ? fragments.stream().map(data -> Fragment.snippet(data.getKey(), data.getValue())).collect(Collectors.toList()) : null) .setClientRequest(new ClientRequest()) .setClientResponse( new ClientResponse() .setHeaders(MultiMap.caseInsensitiveMultiMap())); }
private boolean isSuccessResponse(ClientResponse repoResponse) { return HttpResponseStatus.OK.code() == repoResponse.getStatusCode(); }
private KnotContext routeToNextKnotResponse(ClientResponse clientResponse, KnotContext knotContext, List<FormEntity> forms, FormEntity form) { LOGGER.debug("Request next transition to [{}]", DEFAULT_TRANSITION); JsonObject actionContext = new JsonObject() .put("_result", new JsonObject(clientResponse.getBody().toString())) .put("_response", clientResponse.toMetadataJson()); form.fragment().context().put("action", actionContext); knotContext.getClientResponse() .setHeaders(getFilteredHeaders(clientResponse.getHeaders(), form.adapter().getAllowedResponseHeadersPatterns()) ); forms.forEach(f -> f.fragment() .content(simplifier .transform(f.fragment().content(), options.getFormIdentifierName(), f.identifier()))); knotContext.setTransition(DEFAULT_TRANSITION); return knotContext; }
private void createSimpleKnot(Vertx vertx, final String address, final String addToBody, final String transition) { MockKnotProxy.register(vertx.getDelegate(), address, knotContext -> { knotContext.getClientResponse().setBody( knotContext.getClientResponse().getBody().appendString(addToBody) ); knotContext.setTransition(transition); }); }
private void createSimpleFailingKnot(Vertx vertx, final String address, final int statusCode, final MultiMap headers) { MockKnotProxy.register(vertx.getDelegate(), address, knotContext -> { knotContext.getClientResponse().setStatusCode(statusCode).setHeaders(headers); knotContext.setTransition(null); }); } }
@Override public void process(ClientRequest request, Handler<AsyncResult<ClientResponse>> result) { if (closed) { result.handle(Future.failedFuture(new IllegalStateException("Proxy is closed"))); return; } JsonObject _json = new JsonObject(); _json.put("request", request == null ? null : request.toJson()); DeliveryOptions _deliveryOptions = (_options != null) ? new DeliveryOptions(_options) : new DeliveryOptions(); _deliveryOptions.addHeader("action", "process"); _vertx.eventBus().<JsonObject>send(_address, _json, _deliveryOptions, res -> { if (res.failed()) { result.handle(Future.failedFuture(res.cause())); } else { result.handle(Future.succeededFuture(res.result().body() == null ? null : new ClientResponse(res.result().body()))); } }); }
private MultiMap getHeaders(ClientResponse clientResponse, int bodyLength) { MultiMap headers = clientResponse.getHeaders(); headers.add(HttpHeaders.CONTENT_LENGTH.toString().toLowerCase(), Integer.toString(bodyLength)) .add("Content-Type", "application/json"); return headers; }
private void traceMessage(ClientResponse message) { if (LOGGER.isTraceEnabled()) { LOGGER.trace("Got message from <template-repository> with value <{}>", message.getBody()); } }
private ClientResponse toInternalError() { return new ClientResponse().setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); }