private static Map<String, List<String>> getHeaders(HttpHeaders headers) { Map<String, List<String>> output = new HashMap<String, List<String>>(); if (headers != null) { for (String key : headers.getRequestHeaders().keySet()) { List<String> values = headers.getRequestHeaders().get(key); output.put(key, values); } } return output; }
private Response getDefaultResponse(HttpHeaders headers) { return Response .ok(indexHtmlGenerator.get(headers.getRequestHeaders())) .header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_HTML) .header("X-UA-Compatible", "IE=edge") .build(); } }
@GET @Produces(MediaType.TEXT_HTML) @Path("index.html") public String index(@Context HttpHeaders httpHeaders) throws IOException { final URL templateUrl = this.getClass().getResource("/swagger/index.html.template"); final String template = Resources.toString(templateUrl, StandardCharsets.UTF_8); final Map<String, Object> model = ImmutableMap.of( "baseUri", RestTools.buildExternalUri(httpHeaders.getRequestHeaders(), httpConfiguration.getHttpExternalUri()).resolve(HttpConfiguration.PATH_API).toString()); return templateEngine.transform(template, model); }
private boolean isStreaming( HttpHeaders httpHeaders ) { if ( "true".equalsIgnoreCase( httpHeaders.getRequestHeaders().getFirst( StreamingFormat.STREAM_HEADER ) ) ) { return true; } for ( MediaType mediaType : httpHeaders.getAcceptableMediaTypes() ) { Map<String, String> parameters = mediaType.getParameters(); if ( parameters.containsKey( "stream" ) && "true".equalsIgnoreCase( parameters.get( "stream" ) ) ) { return true; } } return false; } }
@GET @Timed @ApiOperation(value = "Get detailed API documentation of a single resource") @Produces(MediaType.APPLICATION_JSON) @Path("/{route: .+}") public Response route(@ApiParam(name = "route", value = "Route to fetch. For example /system", required = true) @PathParam("route") String route, @Context HttpHeaders httpHeaders) { final URI baseUri = RestTools.buildExternalUri(httpHeaders.getRequestHeaders(), httpConfiguration.getHttpExternalUri()).resolve(HttpConfiguration.PATH_API); return buildSuccessfulCORSResponse(generator.generateForRoute(route, baseUri.toString())); }
@GET @Produces(MoreMediaTypes.APPLICATION_JAVASCRIPT) public String get(@Context HttpHeaders headers) { final URL templateUrl = this.getClass().getResource("/web-interface/config.js.template"); final String template; try { template = Resources.toString(templateUrl, StandardCharsets.UTF_8); } catch (IOException e) { throw new RuntimeException("Unable to read AppConfig template while generating web interface configuration: ", e); } final URI baseUri = RestTools.buildExternalUri(headers.getRequestHeaders(), httpConfiguration.getHttpExternalUri()); final Map<String, Object> model = ImmutableMap.of( "rootTimeZone", configuration.getRootTimeZone(), "serverUri", baseUri.resolve(HttpConfiguration.PATH_API), "appPathPrefix", baseUri.getPath()); return templateEngine.transform(template, model); } }
protected void addHeaders( final InternalJettyServletRequest res, final HttpHeaders httpHeaders ) { for ( Map.Entry<String,List<String>> header : httpHeaders.getRequestHeaders().entrySet() ) { final String key = header.getKey(); final List<String> value = header.getValue(); if ( value == null ) { continue; } if ( value.size() != 1 ) { throw new IllegalArgumentException( "expecting one value per header" ); } if ( !key.equals( "Accept" ) && !key.equals( "Content-Type" ) ) { res.addHeader( key, value.get( 0 ) ); } } // Make sure they are there and always json // Taking advantage of Map semantics here res.addHeader("Accept", "application/json"); res.addHeader("Content-Type", "application/json"); }
public static StringBuilder append(StringBuilder sb, UriInfo uriInfo, HttpHeaders httpHeaders) { sb.append("\n UriInfo:"); sb.append("\n Absolute path : ").append(uriInfo.getAbsolutePath()); sb.append("\n Base URI : ").append(uriInfo.getBaseUri()); sb.append("\n Mathced resources : ").append(uriInfo.getMatchedResources().toString()); sb.append("\n Matched URIs : ").append(uriInfo.getMatchedURIs().toString()); sb.append("\n Path : ").append(uriInfo.getPath()); sb.append("\n Path parameters:\n"); dumpMultivaluedMap(sb, uriInfo.getPathParameters()); sb.append(" Path segments : ").append(uriInfo.getPathSegments().toString()); sb.append("\n Query parameters:\n"); dumpMultivaluedMap(sb, uriInfo.getQueryParameters()); sb.append(" Request URI : ").append(uriInfo.getRequestUri()); sb.append("\n\n HttpHeaders:\n"); dumpMultivaluedMap(sb, httpHeaders.getRequestHeaders()); return sb; }
@GET @Path( "needs-auth-header" ) @Produces( MediaType.APPLICATION_JSON ) public Response authHeader( @Context HttpHeaders headers ) { StringBuilder theEntity = new StringBuilder( "{" ); Iterator<Map.Entry<String, List<String>>> headerIt = headers.getRequestHeaders().entrySet().iterator(); while ( headerIt.hasNext() ) { Map.Entry<String, List<String>> header = headerIt.next(); if ( header.getValue().size() != 1 ) { throw new IllegalArgumentException( "Multivalued header: " + header.getKey() ); } theEntity.append( "\"" ).append( header.getKey() ).append( "\":\"" ) .append( header.getValue().get( 0 ) ).append( "\"" ); if ( headerIt.hasNext() ) { theEntity.append( ", " ); } } theEntity.append( "}" ); return Response.ok().entity( theEntity.toString() ).build(); }
public Response.ResponseBuilder evaluatePreconditions() { List<String> ifMatch = headers.getRequestHeaders().get(IF_MATCH); if (ifMatch == null || ifMatch.size() == 0) { return null; } return Response.status(SC_PRECONDITION_FAILED); }
@Override public MultivaluedMap<String, String> getHeaders() { return httpRequest.getHttpHeaders().getRequestHeaders(); }
@PUT @Consumes("*/*") @Produces("text/plain") @Path("main") public StreamingOutput getTextMain(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) { return produceTextMain(is, httpHeaders.getRequestHeaders(), info); }
private MultivaluedMap<String, String> getHeaders(HttpRequest request) { return request.getHttpHeaders().getRequestHeaders(); }
@PUT @Produces({"text/csv", "application/json", "application/rdf+xml"}) public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders, @Context UriInfo info) throws Exception { return Response.ok( parseMetadata(TikaResource.getInputStream(is, httpHeaders), httpHeaders.getRequestHeaders(), info)).build(); }
@PUT @Consumes("*/*") @Produces("text/plain") public StreamingOutput getText(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) { return produceText(getInputStream(is, httpHeaders), httpHeaders.getRequestHeaders(), info); }
@PUT @Consumes("*/*") @Produces("text/xml") public StreamingOutput getXML(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) { return produceOutput(getInputStream(is, httpHeaders), httpHeaders.getRequestHeaders(), info, "xml"); }
@PUT @Consumes("*/*") @Produces("text/html") public StreamingOutput getHTML(final InputStream is, @Context HttpHeaders httpHeaders, @Context final UriInfo info) { return produceOutput(getInputStream(is, httpHeaders), httpHeaders.getRequestHeaders(), info, "html"); }
@Override public CompletionStage<Object> inject(HttpRequest request, HttpResponse response, boolean unwrapAsync) { List<String> list = request.getHttpHeaders().getRequestHeaders().get(paramName); return CompletableFuture.completedFuture(extractValues(list)); }
public Variant selectVariant(List<Variant> variants) throws IllegalArgumentException { if (variants == null || variants.size() == 0) throw new IllegalArgumentException(MESSAGES.variantListMustNotBeZero()); ServerDrivenNegotiation negotiation = new ServerDrivenNegotiation(); MultivaluedMap<String, String> requestHeaders = headers.getRequestHeaders(); negotiation.setAcceptHeaders(requestHeaders.get(ACCEPT)); negotiation.setAcceptCharsetHeaders(requestHeaders.get(ACCEPT_CHARSET)); negotiation.setAcceptEncodingHeaders(requestHeaders.get(ACCEPT_ENCODING)); negotiation.setAcceptLanguageHeaders(requestHeaders.get(ACCEPT_LANGUAGE)); varyHeader = ResponseBuilderImpl.createVaryHeader(variants); response.getOutputHeaders().add(VARY, varyHeader); return negotiation.getBestMatch(variants); }
public Response.ResponseBuilder evaluatePreconditions(Date lastModified) { if (lastModified == null) throw new IllegalArgumentException(MESSAGES.lastModifiedParamNull()); Response.ResponseBuilder builder = null; MultivaluedMap<String, String> headers = this.headers.getRequestHeaders(); String ifModifiedSince = headers.getFirst(IF_MODIFIED_SINCE); if (ifModifiedSince != null && (!isRfc7232preconditions() || (!headers.containsKey(IF_NONE_MATCH)))) { builder = ifModifiedSince(ifModifiedSince, lastModified); } if (builder == null) { String ifUnmodifiedSince = headers.getFirst(IF_UNMODIFIED_SINCE); if (ifUnmodifiedSince != null && (!isRfc7232preconditions() || (!headers.containsKey(IF_MATCH)))) { builder = ifUnmodifiedSince(ifUnmodifiedSince, lastModified); } } if (builder != null && varyHeader != null) builder.header(VARY, varyHeader); return builder; }