aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/restapi/RestApi.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2023-02-09 15:11:08 +0100
committerBjørn Christian Seime <bjorncs@yahooinc.com>2023-02-09 15:18:44 +0100
commitcf2673c4494f233c086dc54d747a377474801fb9 (patch)
tree1b8d0b2d1d0615c35e278799f158c61c7319aa44 /container-core/src/main/java/com/yahoo/restapi/RestApi.java
parent488a3986b3271e49c56945f84bca6bc68bf289bc (diff)
Add support for declarative configuration of required capabilities to RestApi
Diffstat (limited to 'container-core/src/main/java/com/yahoo/restapi/RestApi.java')
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/RestApi.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApi.java b/container-core/src/main/java/com/yahoo/restapi/RestApi.java
index 5dfb19029cc..555ebecec57 100644
--- a/container-core/src/main/java/com/yahoo/restapi/RestApi.java
+++ b/container-core/src/main/java/com/yahoo/restapi/RestApi.java
@@ -7,7 +7,13 @@ import com.yahoo.container.jdisc.AclMapping;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.RequestHandlerSpec;
+import com.yahoo.container.jdisc.RequestView;
+import com.yahoo.jdisc.http.HttpRequest.Method;
+import com.yahoo.security.tls.Capability;
+import com.yahoo.security.tls.CapabilitySet;
+import com.yahoo.security.tls.ConnectionAuthContext;
+import javax.net.ssl.SSLSession;
import java.io.InputStream;
import java.security.Principal;
import java.util.List;
@@ -32,6 +38,9 @@ public interface RestApi {
/** @see com.yahoo.container.jdisc.HttpRequestHandler#requestHandlerSpec() */
RequestHandlerSpec requestHandlerSpec();
+ /** @see com.yahoo.container.jdisc.utils.CapabilityRequiringRequestHandler */
+ CapabilitySet requiredCapabilities(RequestView req);
+
interface Builder {
Builder setObjectMapper(ObjectMapper mapper);
Builder setDefaultRoute(RouteBuilder route);
@@ -50,11 +59,15 @@ public interface RestApi {
/** Disables mappers listed in {@link RestApiMappers#DEFAULT_RESPONSE_MAPPERS} */
Builder disableDefaultResponseMappers();
Builder disableDefaultAclMapping();
+ Builder requiredCapabilities(Capability... capabilities);
+ Builder requiredCapabilities(CapabilitySet capabilities);
RestApi build();
}
interface RouteBuilder {
RouteBuilder name(String name);
+ RouteBuilder requiredCapabilities(Capability... capabilities);
+ RouteBuilder requiredCapabilities(CapabilitySet capabilities);
RouteBuilder addFilter(Filter filter);
// GET
@@ -115,6 +128,8 @@ public interface RestApi {
@FunctionalInterface interface Filter { HttpResponse filterRequest(FilterContext context); }
interface HandlerConfigBuilder {
+ HandlerConfigBuilder withRequiredCapabilities(Capability... capabilities);
+ HandlerConfigBuilder withRequiredCapabilities(CapabilitySet capabilities);
HandlerConfigBuilder withReadAclAction();
HandlerConfigBuilder withWriteAclAction();
HandlerConfigBuilder withCustomAclAction(AclMapping.Action action);
@@ -122,6 +137,7 @@ public interface RestApi {
interface RequestContext {
HttpRequest request();
+ Method method();
PathParameters pathParameters();
QueryParameters queryParameters();
Headers headers();
@@ -135,6 +151,8 @@ public interface RestApi {
AclMapping.Action aclAction();
Optional<Principal> userPrincipal();
Principal userPrincipalOrThrow();
+ Optional<SSLSession> sslSession();
+ Optional<ConnectionAuthContext> connectionAuthContext();
interface Parameters {
Optional<String> getString(String name);