All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hope.kola.contract.restassured.HttpClientConfigBuilder Maven / Gradle / Ivy

There is a newer version: 1.1.2-RELEASE
Show newest version
package hope.kola.contract.restassured;

import static org.apache.http.entity.mime.HttpMultipartMode.*;

import io.restassured.config.HttpClientConfig;
import java.util.concurrent.TimeUnit;
import org.apache.http.entity.mime.HttpMultipartMode;

public class HttpClientConfigBuilder
    implements Mergeable {

  /** should parameters to {@code "http.socket.timeout"} format is miliseconds */
  protected Long connectTimeout;

  /** should parameters to {@code "http.connection.timeout"} format is miliseconds */
  protected Long readTimeout;

  Boolean shouldReuseHttpClientInstance;
  HttpMultipartMode httpMultipartMode;

  /** RFC 822, RFC 2045, RFC 2046 compliant */
  public void multipartStrict() {
    httpMultipartMode = STRICT;
  }

  /** browser-compatible mode, i.e. only write Content-Disposition; use content charset */
  public void multipartRFC6532() {
    httpMultipartMode = RFC6532;
  }

  /** RFC 6532 compliant */
  public void multipartBrowserCompatible() {
    httpMultipartMode = BROWSER_COMPATIBLE;
  }

  public void connectTimeoutInSeconds(Long connectTimeout) {
    this.connectTimeout = TimeUnit.SECONDS.toMillis(connectTimeout);
  }

  public void connectTimeoutInMinutes(Long connectTimeout) {
    this.connectTimeout = TimeUnit.MINUTES.toMillis(connectTimeout);
  }

  public void connectTimeout(Long connectTimeout) {
    this.connectTimeout = connectTimeout;
  }

  public void readTimeout(Long readTimeout) {
    this.readTimeout = readTimeout;
  }

  public void readTimeoutInSeconds(Long readTimeout) {
    this.readTimeout = TimeUnit.SECONDS.toMillis(readTimeout);
  }

  public void readTimeoutInMinutes(Long readTimeout) {
    this.readTimeout = TimeUnit.MINUTES.toMillis(readTimeout);
  }

  public Boolean shouldReuseHttpClientInstance() {
    return shouldReuseHttpClientInstance;
  }

  public void reuseHttpClientInstance() {
    shouldReuseHttpClientInstance = true;
  }

  public void newHttpClientInstance() {
    shouldReuseHttpClientInstance = false;
  }

  @Override
  public HttpClientConfigBuilder merger(HttpClientConfigBuilder from) {
    HttpClientConfigBuilder res = new HttpClientConfigBuilder();
    res.httpMultipartMode = httpMultipartMode;
    res.connectTimeout = connectTimeout;
    res.readTimeout = readTimeout;
    res.shouldReuseHttpClientInstance = shouldReuseHttpClientInstance;
    if (from.httpMultipartMode != null) {
      res.httpMultipartMode = from.httpMultipartMode;
    }
    if (from.connectTimeout != null) {
      res.connectTimeout = from.connectTimeout;
    }
    if (from.readTimeout != null) {
      res.readTimeout = from.readTimeout;
    }
    if (from.shouldReuseHttpClientInstance != null) {
      res.shouldReuseHttpClientInstance = from.shouldReuseHttpClientInstance;
    }
    return res;
  }

  @Override
  public HttpClientConfig transform() {
    HttpClientConfig res = new HttpClientConfig();
    if (httpMultipartMode != null) {
      res = res.httpMultipartMode(httpMultipartMode);
    }
    if (connectTimeout != null) {
      res = res.setParam("http.connection.timeout", connectTimeout.intValue());
    }
    if (readTimeout != null) {
      res = res.setParam("http.socket.timeout", connectTimeout.intValue());
    }
    if (shouldReuseHttpClientInstance != null && shouldReuseHttpClientInstance) {
      res = res.dontReuseHttpClientInstance();
    }

    return res;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy