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

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

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

import io.restassured.config.EncoderConfig;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public class EncoderConfigBuilder
    extends AbstractCoderConfigBuilder {

  protected String defaultQueryParameterCharset;
  protected Boolean shouldAppendDefaultContentCharsetToContentTypeIfUndefined;

  @Override
  public EncoderConfig transform() {
    EncoderConfig res = new EncoderConfig();

    if (defaultContentCharset != null) {
      res.defaultCharsetForContentType(defaultContentCharset);
    }
    if (defaultQueryParameterCharset != null) {
      res = res.defaultQueryParameterCharset(defaultQueryParameterCharset);
    }
    if (shouldAppendDefaultContentCharsetToContentTypeIfUndefined != null) {
      res =
          res.appendDefaultContentCharsetToContentTypeIfUndefined(
              shouldAppendDefaultContentCharsetToContentTypeIfUndefined);
    }
    if (contentTypeToDefaultCharset != null && !contentTypeToDefaultCharset.isEmpty()) {
      for (Map.Entry row : contentTypeToDefaultCharset.entrySet()) {
        res = res.defaultCharsetForContentType(row.getKey(), row.getValue());
      }
    }

    return res;
  }

  @Override
  public EncoderConfigBuilder merger(EncoderConfigBuilder from) {
    EncoderConfigBuilder res = new EncoderConfigBuilder();
    res.defaultContentCharset = defaultContentCharset;
    res.defaultQueryParameterCharset = defaultQueryParameterCharset;
    res.shouldAppendDefaultContentCharsetToContentTypeIfUndefined =
        shouldAppendDefaultContentCharsetToContentTypeIfUndefined;
    res.contentTypeToDefaultCharset = new HashMap<>(contentTypeToDefaultCharset);

    if (from.defaultContentCharset != null) {
      res.defaultContentCharset = from.defaultContentCharset;
    }
    if (from.defaultQueryParameterCharset != null) {
      res.defaultQueryParameterCharset = from.defaultQueryParameterCharset;
    }
    if (from.shouldAppendDefaultContentCharsetToContentTypeIfUndefined != null) {
      res.shouldAppendDefaultContentCharsetToContentTypeIfUndefined =
          from.shouldAppendDefaultContentCharsetToContentTypeIfUndefined;
    }
    if (from.contentTypeToDefaultCharset != null) {
      res.contentTypeToDefaultCharset.putAll(from.contentTypeToDefaultCharset);
    }
    return res;
  }

  public void defaultQueryParameterCharset(String defaultQueryParameterCharset) {
    this.defaultQueryParameterCharset = defaultQueryParameterCharset;
  }

  public void defaultQueryParameterCharsetUTF8() {
    this.defaultQueryParameterCharset = StandardCharsets.UTF_8.name();
  }

  public void defaultQueryParameterCharset(Charset defaultQueryParameterCharset) {
    this.defaultQueryParameterCharset = defaultQueryParameterCharset.name();
  }

  public void shouldAppendDefaultContentCharsetToContentTypeIfUndefined() {
    this.shouldAppendDefaultContentCharsetToContentTypeIfUndefined = true;
  }

  public void shouldNotAppendDefaultContentCharsetToContentTypeIfUndefined() {
    this.shouldAppendDefaultContentCharsetToContentTypeIfUndefined = false;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy