/** * Returns an {@link HttpHeaders} with the specified {@code location}, the default {@code cache-control} * and the default {@code pragma} headers. */ static HttpHeaders headersWithLocation(String location) { return HttpHeaders.of(HttpStatus.FOUND) .add(HttpHeaderNames.LOCATION, location) .add(HttpHeaderNames.CACHE_CONTROL, DEFAULT_CACHE_CONTROL) .add(HttpHeaderNames.PRAGMA, DEFAULT_PRAGMA); }
/** * Returns new HTTP headers with four entries. */ static HttpHeaders of(AsciiString name1, String value1, AsciiString name2, String value2, AsciiString name3, String value3, AsciiString name4, String value4) { return new DefaultHttpHeaders().add(name1, value1).add(name2, value2) .add(name3, value3).add(name4, value4); }
@Override public void addAdditionalResponseHeader(AsciiString name, String value) { requireNonNull(name, "name"); requireNonNull(value, "value"); createAdditionalHeadersIfAbsent().add(name, value); }
@Override public void addAdditionalResponseTrailer(AsciiString name, String value) { requireNonNull(name, "name"); requireNonNull(value, "value"); createAdditionalTrailersIfAbsent().add(name, value); }
private static void setDefaultRequestHeaders(HttpHeaders headers) { if (!headers.contains(HttpHeaderNames.ACCEPT)) { headers.add(HttpHeaderNames.ACCEPT, "*/*"); } } }
/** * Adds the specified HTTP headers. */ public B addHttpHeaders(Headers<AsciiString, String, ?> httpHeaders) { requireNonNull(httpHeaders, "httpHeaders"); this.httpHeaders.add(httpHeaders); return self(); }
@Override public void addAdditionalRequestHeaders(Headers<? extends AsciiString, ? extends String, ?> headers) { requireNonNull(headers, "headers"); createAdditionalHeadersIfAbsent().add(headers); }
@Override public void addAdditionalResponseTrailers(Headers<? extends AsciiString, ? extends String, ?> headers) { requireNonNull(headers, "headers"); createAdditionalTrailersIfAbsent().add(headers); }
@Override protected void applyCookies() { final List<String> cookieValues = getCookies().values().stream() .flatMap(Collection::stream) .map(ArmeriaServerHttpResponse::toNettyCookie) .map(ServerCookieEncoder.LAX::encode) .collect(toImmutableList()); if (!cookieValues.isEmpty()) { headers.add(HttpHeaderNames.SET_COOKIE, cookieValues); } }
private static void addHeader(DeserializationContext ctx, HttpHeaders headers, AsciiString name, JsonNode valueNode) throws JsonMappingException { if (!valueNode.isTextual()) { ctx.reportInputMismatch(HttpHeaders.class, "HTTP header '%s' contains %s (%s); only strings are allowed.", name, valueNode.getNodeType(), valueNode); } headers.add(name, valueNode.asText()); } }
@Override protected void applyCookies() { final List<String> cookieValues = getCookies().values().stream() .flatMap(Collection::stream) .map(HttpCookie::toString) .collect(toImmutableList()); if (!cookieValues.isEmpty()) { headers.add(HttpHeaderNames.COOKIE, cookieValues); } }
/** * Adds the specified HTTP headers. */ public final B addHeaders(Headers<AsciiString, String, ?> headers) { requireNonNull(headers, "headers"); getOrCreateHeaders().add(headers); return self(); }
private void prepareHeaders(HttpHeaders headers, Compressor compressor) { if (compressor != Identity.NONE) { headers.set(GrpcHeaderNames.GRPC_ENCODING, compressor.getMessageEncoding()); } if (!advertisedEncodingsHeader.isEmpty()) { headers.add(GrpcHeaderNames.GRPC_ACCEPT_ENCODING, advertisedEncodingsHeader); } headers.add(GrpcHeaderNames.GRPC_TIMEOUT, TimeoutHeaderUtil.toHeaderValue( TimeUnit.MILLISECONDS.toNanos(ctx.responseTimeoutMillis()))); }
@Override protected void onHeaders(HttpHeaders headers) { if (headers.isEmpty()) { return; } if (trailingHeaders.isEmpty()) { trailingHeaders = headers; } else { trailingHeaders.add(headers); } }
/** * Returns new HTTP headers with two entries. */ static HttpHeaders of(AsciiString name1, String value1, AsciiString name2, String value2) { return new DefaultHttpHeaders().add(name1, value1).add(name2, value2); }
@Override public HttpResponse loginSucceeded(ServiceRequestContext ctx, AggregatedHttpMessage req, MessageContext<Response> message, @Nullable String sessionIndex, @Nullable String relayState) { return HttpResponse.of(headersWithLocation(firstNonNull(relayState, "/")) .add(HttpHeaderNames.SET_COOKIE, setCookie)); }
private AggregatedHttpMessage sendPostRequest(HttpClient client) { final HttpHeaders requestHeaders = HttpHeaders.of(HttpMethod.POST, "/hello") .add(HttpHeaderNames.USER_AGENT, "test-agent/1.0.0") .add(HttpHeaderNames.ACCEPT_ENCODING, "gzip"); return client.execute(requestHeaders, HttpData.of(POST_BODY.getBytes())).aggregate().join(); }
@Test public void shouldBeAlreadyAuthenticated() throws Exception { final HttpHeaders req = HttpHeaders.of(HttpMethod.GET, "/redirect") .add(HttpHeaderNames.COOKIE, "test=test"); final AggregatedHttpMessage resp = client.execute(req).aggregate().join(); assertThat(resp.status()).isEqualTo(HttpStatus.OK); assertThat(resp.content().toStringUtf8()).isEqualTo("authenticated"); }
private static HttpHeaders toResponseHeaders(ArmeriaHttpTransport transport) { final MetaData.Response info = transport.info; if (info == null) { throw new IllegalStateException("response metadata unavailable"); } final HttpHeaders headers = HttpHeaders.of(HttpStatus.valueOf(info.getStatus())); info.getFields().forEach(e -> headers.add(HttpHeaderNames.of(e.getName()), e.getValue())); if (transport.method != HttpMethod.HEAD) { headers.setLong(HttpHeaderNames.CONTENT_LENGTH, transport.contentLength); } return headers; }