@Override public CompletionStage<Result> call(Http.Request request) { Option<CSPResult> maybeResult = processor().process(request.asScala()); if (maybeResult.isEmpty()) { return delegate.call(request); } final CSPResult cspResult = maybeResult.get(); Http.Request newRequest = toJava(cspResult.nonce()) .map(n -> request.addAttr(RequestAttrKey.CSPNonce().asJava(), n)) .orElseGet(() -> request); return delegate.call(newRequest).thenApply((Result result) -> { Result r = result; if (cspResult.nonceHeader()) { r = r.withHeader(Http.HeaderNames.X_CONTENT_SECURITY_POLICY_NONCE_HEADER, cspResult.nonce().get()); } return r.withHeader(Http.HeaderNames.CONTENT_SECURITY_POLICY, cspResult.directives()); }); } }
@Override public CompletionStage<Result> call(Http.Request request) { Option<CSPResult> maybeResult = processor().process(request.asScala()); if (maybeResult.isEmpty()) { return delegate.call(request); } final CSPResult cspResult = maybeResult.get(); Http.Request newRequest = toJava(cspResult.nonce()) .map(n -> request.addAttr(RequestAttrKey.CSPNonce().asJava(), n)) .orElseGet(() -> request); return delegate.call(newRequest).thenApply((Result result) -> { Result r = result; if (cspResult.nonceHeader()) { r = r.withHeader(Http.HeaderNames.X_CONTENT_SECURITY_POLICY_NONCE_HEADER, cspResult.nonce().get()); } return r.withHeader(Http.HeaderNames.CONTENT_SECURITY_POLICY, cspResult.directives()); }); } }