public Builder copy(final Request request) { checkNotNull(request); attributes = request.getAttributes(); headers = request.getHeaders(); action = request.getAction(); path = request.getPath(); parameters = request.getParameters(); payload = request.getPayload(); multipart = request.isMultipart(); multiparts = request.getMultiparts(); return this; }
/** * Requires {@link #action} and {@link #path}. */ public Request build() { checkState(action != null, "Missing: action"); checkState(path != null, "Missing: path"); return new Request(attributes(), headers(), action, path, parameters(), payload, multipart, multiparts); } }
/** * Path + query parameters provide a unique enough request key for known formats. * If a format needs to add more context then they should customize this method. * * @return key that uniquely identifies this upstream request from other contexts * * @since 3.4 */ protected String getRequestKey(final Context context) { return context.getRequest().getPath() + '?' + context.getRequest().getParameters(); }
@Override public boolean matches(final Context context) { checkNotNull(context); String action = context.getRequest().getAction(); String path = context.getRequest().getPath(); log.debug("Matching: {} {}", action, path); if (HttpMethods.GET.equals(action)) { path = Strings2.lower(path); return path.endsWith("/") || path.endsWith("/index.html") || path.endsWith("/index.htm"); } return false; } }
@Override protected void addFromRequest(final VariableSourceBuilder builder, final Request request) { addMavenCoordinates(builder, request.getPath()); }
@Override public Response handle(Context context) throws Exception { String path = assetPath(context); String method = context.getRequest().getAction(); AptFacet aptFacet = context.getRepository().facet(AptFacet.class); AptHostedFacet hostedFacet = context.getRepository().facet(AptHostedFacet.class); switch (method) { case GET: case HEAD: { return doGet(path, aptFacet); } case POST: { if (path.equals("rebuild-indexes")) { hostedFacet.rebuildIndexes(); return HttpResponses.ok(); } else if (path.equals("")) { hostedFacet.ingestAsset(context.getRequest().getPayload()); return HttpResponses.created(); } else { return HttpResponses.methodNotAllowed(method, GET, HEAD); } } default: return HttpResponses.methodNotAllowed(method, GET, HEAD, POST); } }
private boolean isGetRequest(final Request request) { return GET.equals(request.getAction()); }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { String vendor = getVendorToken(context); String project = getProjectToken(context); String version = getVersionToken(context); Request request = checkNotNull(context.getRequest()); Payload payload = checkNotNull(request.getPayload()); Repository repository = context.getRepository(); ComposerHostedFacet hostedFacet = repository.facet(ComposerHostedFacet.class); hostedFacet.upload(vendor, project, version, payload); return HttpResponses.ok(); } }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { final String method = context.getRequest().getAction(); switch (method) { case GET: case HEAD: { final DispatchedRepositories dispatched = context.getRequest().getAttributes() .getOrCreate(DispatchedRepositories.class); return doGet(context, dispatched); } default: return HttpResponses.methodNotAllowed(method, GET, HEAD); } }
/** * Log request details. */ private void logRequest(final Request request) { log.debug("Request: {}", request); if (log.isTraceEnabled()) { if (request.getHeaders().isEmpty()) { log.trace("No request headers"); } else { log.trace("Request headers:"); for (Map.Entry<String, String> header : request.getHeaders()) { log.trace(" {}: {}", header.getKey(), header.getValue()); } } if (request.getAttributes().isEmpty()) { log.trace("No request attributes"); } else { log.trace("Request attributes:"); for (Map.Entry<String, Object> entry : request.getAttributes()) { log.trace(" {}={}", entry.getKey(), entry.getValue()); } } } }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { Repository repository = context.getRepository(); Parameters parameters = context.getRequest().getParameters(); log.debug("[searchV1] repository: {} parameters: {}", repository.getName(), parameters); return NpmResponses.ok(repository.facet(NpmSearchFacet.class).searchV1(parameters)); } };
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { Response response = context.proceed(); if (!Boolean.parseBoolean(context.getRequest().getAttributes().get(DO_NOT_REWRITE, String.class))) { if (response.getStatus().getCode() == HttpStatus.OK && response.getPayload() != null) { response = HttpResponses .ok(composerJsonProcessor.rewriteProviderJson(context.getRepository(), response.getPayload())); } } return response; } }
@Override protected String getUrl(@Nonnull final Context context) { return context.getRequest().getPath().substring(1); } }
Response error = NpmResponses.badRequest(e.getMessage()); log.warn("Error: {} {}: {} - {}", context.getRequest().getAction(), context.getRequest().getPath(), error.getStatus(), e.getMessage(), if (PUT.equals(context.getRequest().getAction())) { error = NpmResponses.badRequest(e.getMessage()); context.getRequest().getAction(), context.getRequest().getPath(), error.getStatus(), e.getMessage(),
public Response handle(@Nonnull final Context context) throws Exception { String name = contentName(context); String method = context.getRequest().getAction(); Payload content = context.getRequest().getPayload();
/** * Returns BREAD action for request action. */ protected String action(final Request request) { switch (request.getAction()) { case HttpMethods.OPTIONS: case HttpMethods.GET: case HttpMethods.HEAD: case HttpMethods.TRACE: return BreadActions.READ; case HttpMethods.POST: case HttpMethods.MKCOL: case HttpMethods.PATCH: return BreadActions.ADD; case HttpMethods.PUT: return BreadActions.EDIT; case HttpMethods.DELETE: return BreadActions.DELETE; } throw new RuntimeException("Unsupported action: " + request.getAction()); } }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { State state = context.getAttributes().require(TokenMatcher.State.class); Repository repository = context.getRepository(); log.debug("[putPackage] repository: {} tokens: {}", repository.getName(), state.getTokens()); repository.facet(NpmHostedFacet.class) .putPackage(packageId(state), revision(state), context.getRequest().getPayload()); return NpmResponses.ok(); } };
String url = context.getRequest().getPath().substring(1); // omit leading slash ProxyTarget proxyTarget = context.getAttributes().require(ProxyTarget.class); if (ProxyTarget.TARBALL == proxyTarget) { Parameters parameters = context.getRequest().getParameters(); if (parameters != null) { return ViewUtils.buildUrlWithParameters(url, parameters);
/** * Un-stash the conditions originally found in {@link Request}. This method accepts only requests returned by {@link * #makeUnconditional(Request)} method, otherwise will throw {@link IllegalStateException}. This method must be used * in pair with the method above. */ @Nonnull public static Request makeConditional(@Nonnull final Request request) { checkNotNull(request); final Headers stashedHeaders = request.getAttributes().require(HTTP_CONDITIONS, Headers.class); for (Entry<String, String> entry : stashedHeaders.entries()) { request.getHeaders().set(entry.getKey(), stashedHeaders.getAll(entry.getKey())); } return request; }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { Repository repository = context.getRepository(); Parameters parameters = context.getRequest().getParameters(); log.debug("[searchIndex] repository: {} parameters: {}", repository.getName(), parameters); return NpmResponses.ok(repository.facet(NpmSearchIndexFacet.class).searchIndex(indexSince(parameters))); } };