Trait

endpoints.algebra

Urls

Related Doc: package algebra

Permalink

trait Urls extends AnyRef

Algebra interface for describing URLs made of a path and a query string.

A path is itself made of segments chained together.

A query string is made of named parameters.

/**
  * Describes an URL starting with a segment containing “articles”, followed
  * by another `String` segment, and a query string containing
  * a mandatory `Lang` parameter named “lang”, and an
  * optional `Int` parameter named “page”.
  *
  * Examples of matching URLs:
  *
  * - /articles/kitchen?lang=fr
  * - /articles/garden?lang=en&page=2
  */
val example = path / "articles" / segment[String] /? (qs[Lang]("lang") & qs[Option[Int]]("page"))
Source
Urls.scala
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Urls
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. abstract type Path[A] <: Url[A]

    Permalink

    An URL path carrying an A information

  2. implicit class PathOps[A] extends AnyRef

    Permalink

    Convenient methods for Paths.

  3. abstract type QueryString[A]

    Permalink

    A query string carrying an A information

    A query string carrying an A information

    QueryString values can be created with the qs operation, and can be combined with the & operation:

    val queryPageAndLang: QueryString[(Int, Option[String])] =
      qs[Int]("page") & qs[Option[String]]("lang")
  4. implicit class QueryStringOps[A] extends AnyRef

    Permalink

    Provides convenient methods on QueryString.

  5. abstract type QueryStringParam[A]

    Permalink

    A single query string parameter carrying an A information.

  6. abstract type Segment[A]

    Permalink

    An URL path segment carrying an A information.

  7. abstract type Url[A]

    Permalink

    An URL carrying an A information

Abstract Value Members

  1. abstract def chainPaths[A, B](first: Path[A], second: Path[B])(implicit tupler: Tupler[A, B]): Path[Out]

    Permalink

    Chains the two paths

  2. abstract def combineQueryStrings[A, B](first: QueryString[A], second: QueryString[B])(implicit tupler: Tupler[A, B]): QueryString[Out]

    Permalink

    Concatenates two QueryStrings

  3. implicit abstract def intSegment: Segment[Int]

    Permalink

    Ability to define Int path segments

  4. implicit abstract def longSegment: Segment[Long]

    Permalink

    Segment containing a Long value

  5. implicit abstract def optionalQueryStringParam[A](implicit arg0: QueryStringParam[A]): QueryStringParam[Option[A]]

    Permalink

    Make a query string parameter optional:

    Make a query string parameter optional:

    path / "articles" /? qs[Option[Int]]("page")

    Client interpreters must omit optional query string parameters that are empty. Server interpreters must accept incoming requests whose optional query string parameters are missing. Server interpreters must report a failure for incoming requests whose optional query string parameters are present, but malformed.

  6. abstract def qs[A](name: String, docs: Documentation = None)(implicit value: QueryStringParam[A]): QueryString[A]

    Permalink

    Builds a QueryString with one parameter.

    Builds a QueryString with one parameter.

    Examples:

    qs[Int]("page")            // mandatory `page` parameter
    qs[Option[String]]("lang") // optional `lang` parameter
    qs[List[Long]]("id")       // repeated `id` parameter
    A

    Type of the value carried by the parameter

    name

    Parameter’s name

  7. abstract def refineQueryStringParam[A, B](pa: QueryStringParam[A])(f: (A) ⇒ Option[B])(g: (B) ⇒ A): QueryStringParam[B]

    Permalink

    Ability to refine a query string parameter for a type A into a query string parameter for a type B given a pair of decoding/encoding functions between A and B.

    Ability to refine a query string parameter for a type A into a query string parameter for a type B given a pair of decoding/encoding functions between A and B.

    A

    The type of the available query string parameter.

    B

    The type of the desired query string parameter.

    pa

    A query string parameter for a type A

    f

    Decoding function from A to Option[B]

    g

    Encoding function from B to A

    returns

    A query string parameter for a type B built by refinement from pa.

  8. abstract def refineSegment[A, B](sa: Segment[A])(f: (A) ⇒ Option[B])(g: (B) ⇒ A): Segment[B]

    Permalink

    Ability to refine a path segment for a type A into a path segment for a type B given a pair of decoding/encoding functions between A and B.

    Ability to refine a path segment for a type A into a path segment for a type B given a pair of decoding/encoding functions between A and B.

    A

    The type of the available path segment.

    B

    The type of the desired path segment.

    sa

    A path segment for a type A

    f

    Decoding function from A to Option[B]

    g

    Encoding function from B to A

    returns

    A path segment for a type B built by refinement from sa.

  9. implicit abstract def repeatedQueryStringParam[A, CC[X] <: Iterable[X]](implicit arg0: QueryStringParam[A], factory: scala.collection.compat.Factory[A, CC[A]]): QueryStringParam[CC[A]]

    Permalink

    Support query string parameters with multiple values:

    Support query string parameters with multiple values:

    path / "articles" /? qs[List[Long]]("id")

    Server interpreters must accept incoming requests where such parameters are missing (in such a case, its value is an empty collection), and report a failure if at least one value is malformed.

  10. abstract def segment[A](name: String = "", docs: Documentation = None)(implicit s: Segment[A]): Path[A]

    Permalink

    Builds a path segment carrying an A information

  11. abstract def staticPathSegment(segment: String): Path[Unit]

    Permalink

    Builds a static path segment

  12. implicit abstract def stringQueryString: QueryStringParam[String]

    Permalink

    Ability to define String query string parameters

  13. implicit abstract def stringSegment: Segment[String]

    Permalink

    Ability to define String path segments

  14. implicit abstract def urlInvFunctor: InvariantFunctor[Url]

    Permalink
  15. abstract def urlWithQueryString[A, B](path: Path[A], qs: QueryString[B])(implicit tupler: Tupler[A, B]): Url[Out]

    Permalink

    Builds an URL from the given path and query string

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. implicit def booleanQueryString: QueryStringParam[Boolean]

    Permalink

    Query string parameter containing a Boolean value

  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. implicit def doubleQueryString: QueryStringParam[Double]

    Permalink
  8. implicit def dummyPathToUrl[A](p: Path[A]): Url[A]

    Permalink

    Implicit conversion to get rid of intellij errors when defining paths.

    Implicit conversion to get rid of intellij errors when defining paths. Effectively should not be called.

  9. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  14. implicit def intQueryString: QueryStringParam[Int]

    Permalink

    Ability to define Int query string parameters

  15. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  16. implicit def longQueryString: QueryStringParam[Long]

    Permalink

    Query string parameter containing a Long value

  17. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  18. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  19. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  20. val path: Path[Unit]

    Permalink

    An empty path.

    An empty path.

    Useful to begin a path definition:

    path / "foo" / segment[Int] /? qs[String]("bar")
  21. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  22. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  23. implicit def uuidQueryString: QueryStringParam[UUID]

    Permalink

    Ability to define UUID query string parameters

  24. implicit def uuidSegment: Segment[UUID]

    Permalink

    Ability to define UUID path segments

  25. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped