@Override public byte[] getBody() { return styxRequest.body(); }
@Test public void requestBodyIsImmutable() { HttpRequest request = get("/foo") .body("Original body", UTF_8) .build(); request.body()[0] = 'A'; assertThat(request.bodyAs(UTF_8), is("Original body")); }
private Observable<Connection> connection(HttpRequest request, Optional<ConnectionPool> origin) { return origin .map(ConnectionPool::borrowConnection) .orElseGet(() -> { request.body().releaseContentBuffers(); return Observable.error(new NoAvailableHostsException(appId)); }); }
private ChannelFutureListener subscribeToResponseBody() { return future -> { if (future.isSuccess()) { request.body().content().subscribe(requestBodyChunkSubscriber); } else { LOGGER.error(format("error writing body to origin=%s request=%s", nettyConnection.getOrigin(), request), future.cause()); responseFromOriginObserver.onError(new TransportLostException(nettyConnection.channel().remoteAddress(), nettyConnection.getOrigin())); } }; }
@Test(dataProvider = "emptyBodyRequests") public void encodesToStreamingHttpRequestWithEmptyBody(LiveHttpRequest streamingRequest) throws Exception { HttpRequest full = Mono.from(streamingRequest.aggregate(0x1000)).block(); assertThat(full.body(), is(new byte[0])); }
@Test public void contentFromStringOnlySetsContentLength() { HttpRequest request = HttpRequest.get("/") .body("Response content.", UTF_16) .build(); assertThat(request.body(), is("Response content.".getBytes(UTF_16))); assertThat(request.header("Content-Length"), is(Optional.of("36"))); }
@Test public void contentFromByteArraySetsContentLengthIfRequired() { HttpRequest response1 = HttpRequest.get("/") .body("Response content.".getBytes(UTF_16), true) .build(); assertThat(response1.body(), is("Response content.".getBytes(UTF_16))); assertThat(response1.header("Content-Length"), is(Optional.of("36"))); HttpRequest response2 = HttpRequest.get("/") .body("Response content.".getBytes(UTF_8), false) .build(); assertThat(response2.body(), is("Response content.".getBytes(UTF_8))); assertThat(response2.header("Content-Length"), is(Optional.empty())); }
Builder(HttpRequest request) { this.id = request.id(); this.method = request.method(); this.url = request.url(); this.version = request.version(); this.headers = request.headers().newBuilder(); this.body = request.body(); }
private static HttpHandler newHandler(String originId, RequestHandler wireMockHandler) { return (httpRequest, ctx) -> httpRequest.aggregate(MAX_CONTENT_LENGTH) .map(fullRequest -> { LOGGER.info("{} received: {}\n{}", new Object[]{originId, fullRequest.url(), fullRequest.body()}); return fullRequest; }) .flatMap(fullRequest -> { Request wmRequest = new WiremockStyxRequestAdapter(fullRequest); com.github.tomakehurst.wiremock.http.Response wmResponse = wireMockHandler.handle(wmRequest); return Eventual.of(toStyxResponse(wmResponse).stream()); }); }
@Test public void createsRequestBuilderFromRequest() { HttpRequest originalRequest = get("/home") .cookies(requestCookie("fred", "blogs")) .header("some", "header") .build(); HttpRequest clonedRequest = originalRequest.newBuilder().build(); assertThat(clonedRequest.method(), is(originalRequest.method())); assertThat(clonedRequest.url(), is(originalRequest.url())); assertThat(clonedRequest.headers().toString(), is(originalRequest.headers().toString())); assertThat(clonedRequest.body(), is(originalRequest.body())); }
private static HttpHandler newHandler(RequestHandler wireMockHandler) { return (httpRequest, ctx) -> httpRequest.aggregate(MAX_CONTENT_LENGTH) .map(fullRequest -> { LOGGER.info("Received: {}\n{}", new Object[]{fullRequest.url(), fullRequest.body()}); return fullRequest; }) .flatMap(fullRequest -> { Request wmRequest = new WiremockStyxRequestAdapter(fullRequest); com.github.tomakehurst.wiremock.http.Response wmResponse = wireMockHandler.handle(wmRequest); return Eventual.of(toStyxResponse(wmResponse).stream()); }); } }
Builder(HttpRequest request) { this.id = request.id(); this.method = request.method(); this.url = request.url(); this.version = request.version(); this.headers = request.headers().newBuilder(); this.body = new ByteStream(Flux.just(new Buffer(copiedBuffer(request.body())))); }
@Test public void createsARequestWithDefaultValues() { HttpRequest request = get("/index").build(); assertThat(request.version(), is(HTTP_1_1)); assertThat(request.url().toString(), is("/index")); assertThat(request.path(), is("/index")); assertThat(request.id(), is(notNullValue())); assertThat(request.cookies(), is(emptyIterable())); assertThat(request.headers(), is(emptyIterable())); assertThat(request.headers("any"), is(emptyIterable())); assertThat(request.body().length, is(0)); assertThat(request.cookie("any"), isAbsent()); assertThat(request.header("any"), isAbsent()); assertThat(request.keepAlive(), is(true)); assertThat(request.method(), is(GET)); assertThat(request.queryParam("any"), isAbsent()); assertThat(request.queryParams("any"), is(emptyIterable())); }
@Test public void decodesToFullHttpRequest() throws Exception { LiveHttpRequest streamingRequest = post("/foo/bar", body("foo", "bar")) .version(HTTP_1_0) .header("HeaderName", "HeaderValue") .cookies(requestCookie("CookieName", "CookieValue")) .build(); HttpRequest full = Mono.from(streamingRequest.aggregate(0x1000)).block(); assertThat(full.method(), is(POST)); assertThat(full.url(), is(url("/foo/bar").build())); assertThat(full.version(), is(HTTP_1_0)); assertThat(full.headers(), containsInAnyOrder( header("HeaderName", "HeaderValue"), header("Cookie", "CookieName=CookieValue"))); assertThat(full.cookies(), contains(requestCookie("CookieName", "CookieValue"))); assertThat(full.body(), is(bytes("foobar"))); }
Builder(HttpRequest request) { this.id = request.id(); this.method = httpMethod(request.method().name()); this.clientAddress = request.clientAddress(); this.url = request.url(); this.secure = request.isSecure(); this.version = httpVersion(request.version().toString()); this.headers = request.headers().newBuilder(); this.body = request.body().content(); this.cookies = new ArrayList<>(request.cookies()); }