diff options
Diffstat (limited to 'configserver/src/main/java/com/yahoo/vespa/config/server/http/ProxyResponse.java')
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/http/ProxyResponse.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/ProxyResponse.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/ProxyResponse.java new file mode 100644 index 00000000000..4c310dd8a0d --- /dev/null +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/ProxyResponse.java @@ -0,0 +1,36 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.config.server.http; + +import com.yahoo.container.jdisc.HttpResponse; +import org.apache.http.Header; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.Optional; + +/** + * Proxies response back to client, keeps Content-Type header if it is present + * + * @author Ola Aunrønning + */ +class ProxyResponse extends HttpResponse { + + private final org.apache.http.HttpResponse clientResponse; + + ProxyResponse(org.apache.http.HttpResponse clientResponse) { + super(clientResponse.getStatusLine().getStatusCode()); + this.clientResponse = clientResponse; + } + + @Override + public String getContentType() { + return Optional.ofNullable(clientResponse.getFirstHeader("Content-Type")) + .map(Header::getValue) + .orElseGet(super::getContentType); + } + + @Override + public void render(OutputStream outputStream) throws IOException { + clientResponse.getEntity().writeTo(outputStream); + } +} |