summaryrefslogtreecommitdiffstats
path: root/clustercontroller-utils/src/main/java/com/yahoo/vespa/clustercontroller/utils/communication/http/HttpResult.java
diff options
context:
space:
mode:
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.java87
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());
+ }
+}