private static CharSequence viaHeader(LiveHttpRequest httpMessage) { CharSequence styxViaEntry = styxViaEntry(httpMessage.version()); return httpMessage.headers().get(VIA) .map(viaHeader -> !isNullOrEmpty(viaHeader) ? viaHeader + ", " + styxViaEntry : styxViaEntry) .orElse(styxViaEntry); }
@VisibleForTesting static DefaultHttpRequest toNettyRequest(LiveHttpRequest request) { HttpVersion version = request.version(); HttpMethod method = request.method(); String url = request.url().toString(); DefaultHttpRequest nettyRequest = new DefaultHttpRequest(toNettyVersion(version), toNettyMethod(method), url, false); request.headers().forEach((name, value) -> nettyRequest.headers().add(name, value)); return nettyRequest; }
/** * Creates a new {@link Builder} from streaming request and a content byte array. * * @param request a streaming HTTP request object * @param body an HTTP body content array */ public Builder(LiveHttpRequest request, byte[] body) { this.id = request.id(); this.method = request.method(); this.url = request.url(); this.version = request.version(); this.headers = request.headers().newBuilder(); this.body = body; }
Builder(LiveHttpRequest 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(); }
@Test public void createsANewRequestWithSameVersionAsBefore() { LiveHttpRequest v10Request = get("/foo/bar").version(HTTP_1_0).build(); LiveHttpRequest newRequest = v10Request.newBuilder().uri("/blah/blah").build(); assertThat(newRequest.version(), is(HTTP_1_0)); }
@Test public void createsARequestWithDefaultValues() { LiveHttpRequest 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(bytesToString(request.body()), is("")); 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())); }
/** * Creates a new {@link Builder} from an existing request with a new body content stream. * * @param request a HTTP request object * @param contentStream a body content stream */ public Builder(LiveHttpRequest request, ByteStream contentStream) { this.id = request.id(); this.method = httpMethod(request.method().name()); this.url = request.url(); this.version = httpVersion(request.version().toString()); this.headers = request.headers().newBuilder(); this.body = body; }
@Test public void convertsToStreamingHttpRequest() throws Exception { HttpRequest fullRequest = new HttpRequest.Builder(POST, "/foo/bar").body("foobar", UTF_8) .version(HTTP_1_1) .header("HeaderName", "HeaderValue") .cookies(requestCookie("CookieName", "CookieValue")) .build(); LiveHttpRequest streaming = fullRequest.stream(); assertThat(streaming.method(), is(HttpMethod.POST)); assertThat(streaming.url(), is(url("/foo/bar").build())); assertThat(streaming.version(), is(HTTP_1_1)); assertThat(streaming.headers(), containsInAnyOrder( header("Content-Length", "6"), header("HeaderName", "HeaderValue"), header("Cookie", "CookieName=CookieValue"))); assertThat(streaming.cookies(), contains(requestCookie("CookieName", "CookieValue"))); StepVerifier.create(streaming.aggregate(0x10000).map(it -> it.bodyAs(UTF_8))) .expectNext("foobar") .verifyComplete(); }