diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-02-09 15:11:08 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-02-09 15:18:44 +0100 |
commit | cf2673c4494f233c086dc54d747a377474801fb9 (patch) | |
tree | 1b8d0b2d1d0615c35e278799f158c61c7319aa44 /container-core/src/main/java/com/yahoo/restapi/RestApi.java | |
parent | 488a3986b3271e49c56945f84bca6bc68bf289bc (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.java | 18 |
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); |