content: /*
   *                       ######
   *                       ######
   * ############    ####( ######  #####. ######  ############   ############
   * #############  #####( ######  #####. ######  #############  #############
   *        ######  #####( ######  #####. ######  #####  ######  #####  ######
   * ###### ######  #####( ######  #####. ######  #####  #####   #####  ######
   * ###### ######  #####( ######  #####. ######  #####          #####  ######
   * #############  #############  #############  #############  #####  ######
   *  ############   ############  #############   ############  #####  ######
   *                                      ######
   *                               #############
   *                               ############
   *
   * Adyen Java API Library
   *
   * Copyright (c) 2017 Adyen B.V.
   * This file is open source and available under the MIT license.
   * See the LICENSE file for more info.
   */
  package com.adyen.httpclient;
  
  import java.util.List;
  import java.util.Map;
  
  public class HTTPClientException extends Exception {
    private int code = 0;
    private Map<String, List<String>> responseHeaders = null;
    private String responseBody = null;
  
    public HTTPClientException() {}
  
    public HTTPClientException(Throwable throwable) {
      super(throwable);
    }
  
    public HTTPClientException(String message) {
      super(message);
    }
  
    public HTTPClientException(String message, Throwable cause) {
      super(message, cause);
    }
  
    public HTTPClientException(
        String message,
        Throwable throwable,
        int code,
        Map<String, List<String>> responseHeaders,
        String responseBody) {
      super(message, throwable);
      this.code = code;
      this.responseHeaders = responseHeaders;
      this.responseBody = responseBody;
    }
  
    public HTTPClientException(
        String message, int code, Map<String, List<String>> responseHeaders, String responseBody) {
      this(message, null, code, responseHeaders, responseBody);
    }
  
    public HTTPClientException(
        String message, Throwable throwable, int code, Map<String, List<String>> responseHeaders) {
      this(message, throwable, code, responseHeaders, null);
    }
  
    public HTTPClientException(
        int code, Map<String, List<String>> responseHeaders, String responseBody) {
      this(null, null, code, responseHeaders, responseBody);
    }
  
    public HTTPClientException(int code, String message) {
      super(message);
      this.code = code;
    }
  
    public HTTPClientException(
        int code, String message, Map<String, List<String>> responseHeaders, String responseBody) {
      this(code, message);
      this.responseHeaders = responseHeaders;
      this.responseBody = responseBody;
    }
  
    /**
     * Get the HTTP status code.
     *
     * @return HTTP status code
     */
    public int getCode() {
      return code;
    }
  
    /**
     * Get the HTTP response headers.
     *
     * @return A map of list of string
     */
    public Map<String, List<String>> getResponseHeaders() {
      return responseHeaders;
    }
  
    /**
     * Get the HTTP response body.
     *
     * @return Response body in the form of string
     */
    public String getResponseBody() {
      return responseBody;
    }
  }
  