diff options
Diffstat (limited to 'clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java')
-rw-r--r-- | clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java new file mode 100644 index 00000000000..7e2bf90b92c --- /dev/null +++ b/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java @@ -0,0 +1,87 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.clustercontroller.utils.communication.http; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + +public class HttpResult { + private static class HttpReturnCode { + private final int code; + private final String message; + + public HttpReturnCode(int code, String message) { + this.code = code; + this.message = message; + } + public boolean isSuccess() { return (code >= 200 && code < 300); } + public int getCode() { return code; } + public String getMessage() { return message; } + } + private HttpReturnCode httpReturnCode; + private final List<HttpRequest.KeyValuePair> headers; + private Object content; + + public HttpResult() { + httpReturnCode = new HttpReturnCode(200, "OK"); + headers = new LinkedList<>(); + } + + public HttpResult(HttpResult other) { + httpReturnCode = other.httpReturnCode; + headers = other.headers; + content = other.content; + } + + public HttpResult setHttpCode(int code, String description) { + this.httpReturnCode = new HttpReturnCode(code, description); + return this; + } + + public HttpResult setContent(Object content) { + this.content = content; + return this; + } + + public HttpResult addHeader(String key, String value) { + headers.add(new HttpRequest.KeyValuePair(key, value)); + return this; + } + + public boolean isSuccess() { return httpReturnCode.isSuccess(); } + public int getHttpReturnCode() { return httpReturnCode.getCode(); } + public String getHttpReturnCodeDescription() { return httpReturnCode.getMessage(); } + public Collection<HttpRequest.KeyValuePair> getHeaders() { return headers; } + public String getHeader(String key) { + for (HttpRequest.KeyValuePair p : headers) { + if (p.getKey().equals(key)) return p.getValue(); + } + return null; + } + + public Object getContent() { return content; } + + @Override + public String toString() { return toString(false); } + public String toString(boolean verbose) { + StringBuilder sb = new StringBuilder(); + sb.append("HTTP ").append(httpReturnCode.getCode()).append('/').append(httpReturnCode.getMessage()); + if (verbose) { + for(HttpRequest.KeyValuePair header : headers) { + sb.append('\n').append(header.getKey()).append(": ").append(header.getValue()); + } + if (content != null) { + StringBuilder contentBuilder = new StringBuilder(); + printContent(contentBuilder); + String s = contentBuilder.toString(); + if (!s.isEmpty()) { + sb.append("\n\n").append(s); + } + } + } + return sb.toString(); + } + public void printContent(StringBuilder sb) { + sb.append(content.toString()); + } +} |