package com.griddynamics.jagger.invoker.v2; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import java.io.Serializable; import java.util.Map; import static java.util.stream.Collectors.toMap; /** * An object that represents HTTP-response. It consists of {@link JHttpResponse#status}, * {@link JHttpResponse#body} and {@link JHttpResponse#headers} fields. <p> * * @author Anton Antonenko * @since 2.0 * * @ingroup Main_Http_group */ public class JHttpResponse<T> implements Serializable { private HttpStatus status; private T body; private HttpHeaders headers; public JHttpResponse(HttpStatus status, T body, HttpHeaders headers) { this.status = status; this.body = body; this.headers = headers; } public HttpStatus getStatus() { return status; } public T getBody() { return body; } public HttpHeaders getHeaders() { return headers; } public Map<String, String> getCookies() { return headers.get("Cookie").stream() .map(cookieStr -> cookieStr.split("=")) .collect(toMap(cookieArr -> cookieArr[0], cookieArr -> cookieArr[1])); } public static JHttpResponse copyOf(JHttpResponse jHttpResponse) { if (jHttpResponse == null) return null; return new JHttpResponse(jHttpResponse.getStatus(), jHttpResponse.getBody(), jHttpResponse.getHeaders()); } @Override public String toString() { return "JHttpResponse{" + "status=" + status + ", body=" + body + ", headers=" + headers + '}'; } }