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

io.fintrospect.parameters.Header.scala Maven / Gradle / Ivy

There is a newer version: 12.21.1
Show newest version
package io.fintrospect.parameters

import com.twitter.finagle.http.Message
import io.fintrospect.parameters.types._

/**
  * Parameters which are bound to request/response headers
  */
object Header {

  trait Mandatory[T] extends MandatoryParameter[Message, T, RequestBinding] {
    self: ExtParameter[Message, T, RequestBinding] =>
  }

  trait MandatorySeq[T] extends MandatoryParameter[Message, Seq[T], RequestBinding] {
    self: ExtParameter[Message, Seq[T], RequestBinding] =>
  }

  trait Optional[T] extends OptionalParameter[Message, T, RequestBinding] {
    self: ExtParameter[Message, T, RequestBinding] =>
  }

  trait OptionalSeq[T] extends OptionalParameter[Message, Seq[T], RequestBinding] {
    self: ExtParameter[Message, Seq[T], RequestBinding] =>
  }

  val required = new Parameters[HeaderParameter, Mandatory] with MultiParameters[MultiHeaderParameter, MandatorySeq] {
    override def apply[T](spec: ParameterSpec[T]) = new SingleHeaderParameter(spec) with Mandatory[T]

    override val multi = new Parameters[MultiHeaderParameter, MandatorySeq] {
      override def apply[T](spec: ParameterSpec[T]) = new MultiHeaderParameter(spec) with MandatorySeq[T]
    }
  }

  val optional = new Parameters[HeaderParameter, Optional] with MultiParameters[MultiHeaderParameter, OptionalSeq] {
    override def apply[T](spec: ParameterSpec[T]) = new SingleHeaderParameter(spec) with Optional[T]

    override val multi = new Parameters[MultiHeaderParameter, OptionalSeq] {
      override def apply[T](spec: ParameterSpec[T]) = new MultiHeaderParameter(spec) with OptionalSeq[T]
    }

  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy