private String getParam(HttpRequest httpRequest, String param) { return httpRequest.getProperty(param); }
/** * The port of the URI of this request. * * @return the port number of the URI */ public int getPort() { return getUri().getPort(); }
public static InputStream unzipStreamIfNeeded(final HttpRequest httpRequest) throws IOException { final String contentEncodingHeader = httpRequest.getHeader("content-encoding"); if ("gzip".equals(contentEncodingHeader)) { return new GZIPInputStream(httpRequest.getData()); } else { return httpRequest.getData(); } }
@Override public MockServiceHandler.Key createKey(HttpRequest request) { StringBuilder sb = new StringBuilder(); sb.append(request.getUri().getPath()); String query = request.getUri().getQuery(); if (query != null) { sb.append("?").append(query); } return new TextKey(request.getMethod(), sb.toString()); }
protected HttpResponse handleInternal(HttpRequest request) { final RestUri restUri; try { restUri = new RestUri(request.getUri()); validateUriStructureForRequestMethod(restUri, request.getMethod()); } catch (RestApiException e) { return e.getResponse(); } catch (IllegalArgumentException e) { return Response.createErrorResponse(400, "Non valid value for 'create' parameter, must be empty, true, or " + "false: " + request.getProperty(CREATE_PARAMETER_NAME), RestUri.apiErrorCodes.INVALID_CREATE_VALUE); String condition = request.getProperty(CONDITION_PARAMETER_NAME); Optional<String> route = Optional.ofNullable(request.getProperty(ROUTE_PARAMETER_NAME)); switch (request.getMethod()) { case GET: // Vespa Visit/Get return isVisitRequestUri(restUri) ? handleVisit(restUri, request) : handleGet(restUri, request);
private HttpResponse handlePATCH(HttpRequest request) { String path = request.getUri().getPath(); if (path.startsWith("/nodes/v2/node/")) { Node node = nodeFromRequest(request); nodeRepository.write(new NodePatcher(nodeFlavors, request.getData(), node, nodeRepository).apply()); return new MessageResponse("Updated " + node.hostname()); } else if (path.startsWith("/nodes/v2/upgrade/")) { return setTargetVersions(request); } throw new NotFoundException("Nothing at '" + path + "'"); }
private int getOverloadReturnCode(HttpRequest request) { if (request.getHeader(Headers.SILENTUPGRADE) != null ) { return 299; } return 429; }
boolean benchmarkCoverage = VespaHeaders.benchmarkCoverage(benchmarking, request.getJDiscRequest().headers()); if (benchmarking && ! request.hasProperty(SoftTimeout.enableProperty.toString())) query.properties().set(SoftTimeout.enableProperty, false); ErrorMessage.createInvalidQueryParameter("No search chain named '" + searchChainName + "' was found")); } else { String pathAndQuery = UriTools.rawRequest(request.getUri()); result = search(pathAndQuery, query, searchChain, searchChainRegistry);
private Map<String, String> requestMapFromRequest(HttpRequest request) { if (request.getMethod() == com.yahoo.jdisc.http.HttpRequest.Method.POST && JSON_CONTENT_TYPE.equals(getMediaType(request))) byte[] byteArray = IOUtils.readBytes(request.getData(), 1 << 20); inspector = SlimeUtils.jsonToSlime(byteArray).get(); if (inspector.field("error_message").valid()){ requestMap.putAll(request.propertyMap()); return request.propertyMap();
private void writeToLogs(long endTime) { com.yahoo.jdisc.http.HttpRequest jdiscRequest = httpRequest.getJDiscRequest(); jdiscRequest, extendedResponse.getTiming(), httpRequest.getUri().toString(), commitStartTime, startTime,
public NodeAclResponse(HttpRequest request, NodeRepository nodeRepository) { super(200); this.nodeRepository = nodeRepository; this.slime = new Slime(); this.aclsForChildren = request.getBooleanProperty(CHILDREN_REQUEST_PROPERTY); Cursor root = slime.setObject(); String hostname = baseName(request.getUri().getPath()); toSlime(hostname, root); }
private void ensureRequestData() { if (requestData == null) { if (parent == null) { throw new IllegalStateException( "Neither another HttpRequest nor request data input stream available."); } else { requestData = parent.getData(); } } }
/** * Instantiate a request builder with defaults from an existing request. * If the request is null, a JDisc request must be set explitly using * {@link #jdiscRequest(com.yahoo.jdisc.http.HttpRequest)} before * instantiating any HTTP request. * * @param request * source for defaults and parent JDisc request, may be null * * @see HttpRequest#createTestRequest(String, com.yahoo.jdisc.http.HttpRequest.Method) */ public Builder(HttpRequest request) { this(request, request.getJDiscRequest()); }
@Override @SuppressWarnings("unchecked") public HttpResponse handle(HttpRequest request, ContentChannel channel) { com.yahoo.processing.Request processingRequest = new com.yahoo.processing.Request(); populate("", request.propertyMap(), processingRequest.properties()); populate("context", request.getJDiscRequest().context(), processingRequest.properties()); processingRequest.properties().set(Request.JDISC_REQUEST, request); FreezeListener freezeListener = new FreezeListener(processingRequest, renderers, defaultRenderer, channel, renderingExecutor); processingRequest.properties().set(freezeListenerKey, freezeListener); Chain<COMPONENT> chain = chainRegistry.getComponent(resolveChainId(processingRequest.properties())); if (chain == null) throw new IllegalArgumentException("Chain '" + processingRequest.properties().get("chain") + "' not found"); Execution execution = createExecution(chain, processingRequest); freezeListener.setExecution(execution); Response processingResponse = execution.process(processingRequest); return freezeListener.getHttpResponse(processingResponse); }
/** * Creates a query from a request * * @param request the HTTP request from which this is created * @param queryProfile the query profile to use for this query, or null if none. */ public Query(HttpRequest request, CompiledQueryProfile queryProfile) { this(request, request.propertyMap(), queryProfile); }
/** * Only for simpler unit testing. * * @param uri the complete URI string * @param method POST, GET, etc * @param requestData for simulating POST * @return a valid HTTP request */ public static HttpRequest createTestRequest(String uri, Method method, InputStream requestData) { return createTestRequest(uri, method, requestData, null); }
/** * Set the output format to the renderer with id = "demo" in services.xml if * no explicit format parameter is present. This allows using e.g. the * default processing renderer by adding <code>&format=default</code> to * the HTTP request. * * @param builder * the mutable builder instance used for creating the forwarding request * @param request * the incoming HTTP request */ private void setFormat(HttpRequest.Builder builder, HttpRequest request) { if ( ! request.hasProperty(FORMAT)) { builder.put(FORMAT, "demo"); } } }
private MessageResponse setTargetVersions(HttpRequest request) { NodeType nodeType = NodeType.valueOf(lastElement(request.getUri().getPath()).toLowerCase()); Inspector inspector = toSlime(request.getData()).get(); List<String> messageParts = new ArrayList<>(3); boolean force = inspector.field("force").asBool(); Inspector versionField = inspector.field("version"); Inspector osVersionField = inspector.field("osVersion"); if (versionField.valid()) { Version version = Version.fromString(versionField.asString()); maintenance.infrastructureVersions().setTargetVersion(nodeType, version, force); messageParts.add("version to " + version.toFullString()); } if (osVersionField.valid()) { String v = osVersionField.asString(); if (v.isEmpty()) { nodeRepository.osVersions().removeTarget(nodeType); messageParts.add("osVersion to null"); } else { Version osVersion = Version.fromString(v); nodeRepository.osVersions().setTarget(nodeType, osVersion, force); messageParts.add("osVersion to " + osVersion.toFullString()); } } if (messageParts.isEmpty()) { throw new IllegalArgumentException("At least one of 'version' and 'osVersion' must be set"); } return new MessageResponse("Set " + String.join(", ", messageParts) + " for nodes of type " + nodeType); }
@Override public HttpResponse handle(HttpRequest request) { try { switch (request.getMethod()) { case GET: return handleGET(request); default: return ErrorResponse.methodNotAllowed("Method '" + request.getMethod() + "' is not supported"); } } catch (NotFoundException | NoSuchNodeException e) { return ErrorResponse.notFoundError(Exceptions.toMessageString(e)); } catch (IllegalArgumentException e) { return ErrorResponse.badRequest(Exceptions.toMessageString(e)); } catch (RuntimeException e) { log.log(Level.WARNING, "Unexpected error handling '" + request.getUri() + "'", e); return ErrorResponse.internalServerError(Exceptions.toMessageString(e)); } }
/** Returns true if this is a benchmarking request, according to headers */ public static boolean benchmarkOutput(com.yahoo.container.jdisc.HttpRequest request) { return request.getHeader(BenchmarkingHeaders.REQUEST) != null; }