summaryrefslogtreecommitdiffstats
path: root/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/CloudTokenDataPlaneHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/CloudTokenDataPlaneHandler.java')
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/CloudTokenDataPlaneHandler.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/CloudTokenDataPlaneHandler.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/CloudTokenDataPlaneHandler.java
new file mode 100644
index 00000000000..2270f514fb7
--- /dev/null
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/cloud/CloudTokenDataPlaneHandler.java
@@ -0,0 +1,31 @@
+package com.yahoo.jdisc.http.filter.security.cloud;
+
+import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.container.jdisc.ThreadedHttpRequestHandler;
+import com.yahoo.jdisc.http.filter.security.cloud.config.CloudTokenDataPlaneFilterConfig;
+import com.yahoo.restapi.SlimeJsonResponse;
+
+import javax.inject.Inject;
+import java.util.List;
+import java.util.concurrent.Executor;
+
+public class CloudTokenDataPlaneHandler extends ThreadedHttpRequestHandler {
+
+ private final List<String> fingerprints;
+
+ @Inject
+ public CloudTokenDataPlaneHandler(CloudTokenDataPlaneFilterConfig config, Executor executor) {
+ super(executor);
+ fingerprints = config.clients().stream()
+ .flatMap(client -> client.tokens().stream())
+ .flatMap(token -> token.fingerprints().stream())
+ .distinct().sorted().toList();
+ }
+
+ @Override
+ public HttpResponse handle(HttpRequest request) {
+ return new SlimeJsonResponse() {{ fingerprints.forEach(slime.setObject().setArray("fingerprints")::addString); }};
+ }
+
+}