aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java30
1 files changed, 18 insertions, 12 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
index c6eaf5abef7..839dbf76faa 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/BadgeApiHandler.java
@@ -1,7 +1,8 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.deployment;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.container.jdisc.EmptyResponse;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.ThreadedHttpRequestHandler;
@@ -53,7 +54,12 @@ public class BadgeApiHandler extends ThreadedHttpRequestHandler {
Method method = request.getMethod();
try {
return switch (method) {
- case GET -> get(request);
+ case OPTIONS -> new SvgHttpResponse("") {{
+ headers().add("Allow", "GET, HEAD, OPTIONS");
+ headers().add("Access-Control-Allow-Origin", "*");
+ headers().add("Access-Control-Allow-Methods", "GET, HEAD, OPTIONS");
+ }};
+ case HEAD, GET -> get(request);
default -> ErrorResponse.methodNotAllowed("Method '" + method + "' is unsupported");
};
} catch (IllegalArgumentException|IllegalStateException e) {
@@ -98,20 +104,20 @@ public class BadgeApiHandler extends ThreadedHttpRequestHandler {
}
private HttpResponse cachedResponse(Key key, Instant now, Supplier<String> badge) {
- return svgResponse(badgeCache.compute(key, (__, value) -> {
+ return new SvgHttpResponse(badgeCache.compute(key, (__, value) -> {
return value != null && value.expiry.isAfter(now) ? value : new Value(badge.get(), now);
}).badgeSvg);
}
- private static HttpResponse svgResponse(String svg) {
- return new HttpResponse(200) {
- @Override public void render(OutputStream outputStream) throws IOException {
- outputStream.write(svg.getBytes(UTF_8));
- }
- @Override public String getContentType() {
- return "image/svg+xml; charset=UTF-8";
- }
- };
+ private static class SvgHttpResponse extends HttpResponse {
+ private final String svg;
+ SvgHttpResponse(String svg) { super(200); this.svg = svg; }
+ @Override public void render(OutputStream outputStream) throws IOException {
+ outputStream.write(svg.getBytes(UTF_8));
+ }
+ @Override public String getContentType() {
+ return "image/svg+xml";
+ }
}