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

hope.kola.contract.api.Headers Maven / Gradle / Ivy

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

import static hope.kola.contract.api.KolaTestFunctions.$VString;

import com.squareup.javapoet.CodeBlock;
import groovy.lang.Closure;
import groovy.lang.DelegatesTo;
import java.util.LinkedHashSet;
import java.util.Set;

@SuppressWarnings("Duplicates")
public class Headers implements HeaderTrait {

  protected Set entries = new LinkedHashSet<>();

  public Set entries() {
    return entries;
  }

  public boolean hasEntries() {
    return !entries.isEmpty();
  }

  public void header(String name, @DelegatesTo(HeaderValue.class) Closure consumer) {
    final HeaderValue hv = new HeaderValue(name);
    consumer.setDelegate(hv);
    consumer.call();
    entries.add(hv);
  }

  /**
   * Populate dynamic value from the global context by the key
   *
   * @param name the header name
   * @param key the key from the context
   */
  public void fromGlobal(String name, final String key) {
    final HeaderValue hv = new HeaderValue(name);
    hv.code(CodeBlock.builder().add("$L($S)", $VString, key));
    entries.add(hv);
  }

  public void header(String name, String value) {
    final HeaderValue hv = new HeaderValue(name);
    hv.withString(value);
    entries.add(hv);
  }

  public void accept(String contentType) {
    header(accept(), contentType);
  }

  public void contentType(String contentType) {
    header(HttpHeaders.CONTENT_TYPE, contentType);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy