endpoints.algebra

CirceEntities

trait CirceEntities extends JsonEntities

Partial interpreter for JsonEntities: only fixes the carrier types, but does not implement the abstract methods.

Uses CirceCodec for both HTTP responses and requests.

It means that, from a client point of view, you will need a complete code even if you only want to build a request entity (despite that a io.circe.Encoder would have sufficed).

The idea is to share codecs between client-side and server-side code, thus guaranteeing consistency between both sides.

Typical usage:

/* shared MyDto.scala */  *
case class MyDto(i: Int, s: String)

object MyDto {
  import io.circe.{Encoder, Decoder}
  import io.circe.generic.semiauto.{deriveEncoder, deriveDecoder}

  implicit val encoder: Encoder[MyDto] = deriveEncoder
  implicit val decoder: Decoder[MyDto] = deriveDecoder
}
/* shared endpoint definition */  *
trait MyEndpoints extends algebra.Endpoints with algebra.CirceEntities {
  val myEndpoint = endpoint(get(path), jsonResponse[MyDto])
}
/* client MyEndpointsClient.scala */  *
object MyEndpointsClient extends MyEndpoints with xhr.CirceEntities with xhr.faithful.Endpoints

MyEndpointsClient.myEndpoint().map(myDto => println(myDto.i))
/* server MyEndpointsServer.scala */  *
object MyEndpointsServer extends MyEndpoints with play.server.CirceEntities {

  val routes = routesFromEndpoints(
    myEndpoint.implementedBy(_ => MyDto(42, "foo"))
  )

}
Source
CirceEntities.scala
Linear Supertypes
JsonEntities, Endpoints, Responses, Requests, Methods, Urls, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. CirceEntities
  2. JsonEntities
  3. Endpoints
  4. Responses
  5. Requests
  6. Methods
  7. Urls
  8. AnyRef
  9. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. abstract type Endpoint[A, B]

    Definition Classes
    Endpoints
  2. type JsonRequest[A] = CirceCodec[A]

    Definition Classes
    CirceEntities → JsonEntities
  3. type JsonResponse[A] = CirceCodec[A]

    Definition Classes
    CirceEntities → JsonEntities
  4. abstract type Method

    Definition Classes
    Methods
  5. abstract type MuxEndpoint[Req <: MuxRequest, Resp, Transport]

    Definition Classes
    Endpoints
  6. abstract type Path[A] <: Url[A]

    Definition Classes
    Urls
  7. implicit class PathOps[A] extends AnyRef

    Definition Classes
    Urls
  8. abstract type QueryString[A]

    Definition Classes
    Urls
  9. implicit class QueryStringOps[A] extends AnyRef

    Definition Classes
    Urls
  10. abstract type QueryStringParam[A]

    Definition Classes
    Urls
  11. abstract type Request[A]

    Definition Classes
    Requests
  12. abstract type RequestEntity[A]

    Definition Classes
    Requests
  13. abstract type RequestHeaders[A]

    Definition Classes
    Requests
  14. abstract type Response[A]

    Definition Classes
    Responses
  15. abstract type Segment[A]

    Definition Classes
    Urls
  16. abstract type Url[A]

    Definition Classes
    Urls

Abstract Value Members

  1. abstract def Delete: Method

    Definition Classes
    Methods
  2. abstract def Get: Method

    Definition Classes
    Methods
  3. abstract def Post: Method

    Definition Classes
    Methods
  4. abstract def Put: Method

    Definition Classes
    Methods
  5. abstract def chainPaths[A, B](first: Path[A], second: Path[B])(implicit tupler: Tupler[A, B]): Path[Out]

    Definition Classes
    Urls
  6. abstract def combineQueryStrings[A, B](first: QueryString[A], second: QueryString[B])(implicit tupler: Tupler[A, B]): QueryString[Out]

    Definition Classes
    Urls
  7. abstract def emptyHeaders: RequestHeaders[Unit]

    Definition Classes
    Requests
  8. abstract def emptyRequest: RequestEntity[Unit]

    Definition Classes
    Requests
  9. abstract def emptyResponse: Response[Unit]

    Definition Classes
    Responses
  10. abstract def endpoint[A, B](request: Request[A], response: Response[B]): Endpoint[A, B]

    Definition Classes
    Endpoints
  11. implicit abstract def intQueryString: QueryStringParam[Int]

    Definition Classes
    Urls
  12. implicit abstract def intSegment: Segment[Int]

    Definition Classes
    Urls
  13. abstract def jsonRequest[A](implicit arg0: JsonRequest[A]): RequestEntity[A]

    Definition Classes
    JsonEntities
  14. abstract def jsonResponse[A](implicit arg0: JsonResponse[A]): Response[A]

    Definition Classes
    JsonEntities
  15. implicit abstract def longQueryString: QueryStringParam[Long]

    Definition Classes
    Urls
  16. implicit abstract def longSegment: Segment[Long]

    Definition Classes
    Urls
  17. abstract def muxEndpoint[Req <: MuxRequest, Resp, Transport](request: Request[Transport], response: Response[Transport]): MuxEndpoint[Req, Resp, Transport]

    Definition Classes
    Endpoints
  18. abstract def optQs[A](name: String)(implicit value: QueryStringParam[A]): QueryString[Option[A]]

    Definition Classes
    Urls
  19. abstract def qs[A](name: String)(implicit value: QueryStringParam[A]): QueryString[A]

    Definition Classes
    Urls
  20. abstract def request[A, B, C, AB](method: Method, url: Url[A], entity: RequestEntity[B], headers: RequestHeaders[C])(implicit tuplerAB: Tupler.Aux[A, B, AB], tuplerABC: Tupler[AB, C]): Request[Out]

    Definition Classes
    Requests
  21. abstract def segment[A](implicit s: Segment[A]): Path[A]

    Definition Classes
    Urls
  22. abstract def staticPathSegment(segment: String): Path[Unit]

    Definition Classes
    Urls
  23. implicit abstract def stringQueryString: QueryStringParam[String]

    Definition Classes
    Urls
  24. implicit abstract def stringSegment: Segment[String]

    Definition Classes
    Urls
  25. abstract def textResponse: Response[String]

    Definition Classes
    Responses
  26. abstract def urlWithQueryString[A, B](path: Path[A], qs: QueryString[B])(implicit tupler: Tupler[A, B]): Url[Out]

    Definition Classes
    Urls

Concrete Value Members

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

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

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

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. implicit def circeJsonDecoder[A](implicit circeDecoder: io.circe.Decoder[A]): Decoder[Json, A]

    Provides a Json io.circe.Decoder based on an existing circe decoder

  8. implicit def circeJsonEncoder[A](implicit circeEncoder: io.circe.Encoder[A]): Encoder[A, Json]

    Provides a Json Encoder based on an existing circe encoder

  9. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  10. final def eq(arg0: AnyRef): Boolean

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

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

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def get[A, B](url: Url[A], headers: RequestHeaders[B])(implicit tuplerAC: Tupler[A, B]): Request[Out]

    Definition Classes
    Requests
  14. final def getClass(): Class[_]

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

    Definition Classes
    AnyRef → Any
  16. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  17. final def ne(arg0: AnyRef): Boolean

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

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

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

    Definition Classes
    Urls
  21. final def post[A, B, C, AB](url: Url[A], entity: RequestEntity[B], headers: RequestHeaders[C])(implicit tuplerAB: Tupler.Aux[A, B, AB], tuplerABC: Tupler[AB, C]): Request[Out]

    Definition Classes
    Requests
  22. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  23. def toString(): String

    Definition Classes
    AnyRef → Any
  24. final def wait(): Unit

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from JsonEntities

Inherited from Endpoints

Inherited from Responses

Inherited from Requests

Inherited from Methods

Inherited from Urls

Inherited from AnyRef

Inherited from Any

Ungrouped