p

typedapi

client

package client

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. client
  2. ApiCompilerOps
  3. ApiCompilerListLowPrio
  4. ApiCompilerMediumPrio
  5. ApiCompilerLowPrio
  6. ApiTransformer
  7. TypeLevelFoldLeftListLowPrio
  8. TypeLevelFoldLeftLowPrio
  9. HListToCompositionLowPrio
  10. AnyRef
  11. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. final case class :|:[El <: HList, In <: HList, D <: HList, T <: ApiComposition](compiler: Aux[El, In, D], tail: T) extends ApiComposition with Product with Serializable
  2. trait ApiCompiler[El <: HList, In <: HList] extends AnyRef

    Compiles type level api description into a function returning data (uri, query, header, body) and return-type A which are used for a request.

    Compiles type level api description into a function returning data (uri, query, header, body) and return-type A which are used for a request.

    Annotations
    @implicitNotFound( ... )
  3. trait ApiCompilerList[H <: HList] extends AnyRef
  4. trait ApiCompilerListLowPrio extends AnyRef
  5. trait ApiCompilerLowPrio extends AnyRef
  6. trait ApiCompilerMediumPrio extends ApiCompilerLowPrio
  7. sealed trait ApiComposition extends AnyRef

    Syntactic sugar to enable: val api = (:= "foo" :> Get[Foo]) :|: (:= "bar" :> Get[Bar])

    Syntactic sugar to enable: val api = (:= "foo" :> Get[Foo]) :|: (:= "bar" :> Get[Bar])

    val (foo :|: bar :|: :=) = compile(transform(api))

  8. sealed trait ApiElement extends AnyRef
  9. sealed trait ApiList[H <: HList] extends AnyRef

    Type level api representation encoded as HList.

    Type level api representation encoded as HList. This wrapper is used to encapsulate shapeless code and enforces api structure: path -> all segment -> all query -> [query, header, body, method] header -> [header, body, method] body -> [method] method -> nothing

  10. sealed trait ApiListWithOps[H <: HList] extends ApiList[H]

    Basic operations.

  11. sealed trait ApiOp extends AnyRef
  12. trait ApiRequest[D <: HList, C, F[_]] extends AnyRef

    Basic api request structure.

    Basic api request structure. Expected input data and return-type are defined for each method.

  13. trait ApiTransformer extends AnyRef

    Separates uri and input description from ApiList.

    Separates uri and input description from ApiList. Example: val api: FinalCons[Get[Foo] :: Segment["name".type, String] :: "find".type :: HNil] = := :> "find" :> Segment[String]('name) :> Get[Foo] val trans: (ElementTypes["name".type :: SegmentInput] :: HNil, InputTypes[FieldType['name.type, String] :: HNil]) We can use this to define our expected input.

  14. trait ClientManager[C] extends AnyRef
  15. final case class CompositionCons[H <: HList]() extends ApiList[H] with Product with Serializable

    Compose multiple type level api descriptions in a HList of HLists.

  16. type Data = ::[List[String], ::[Map[String, List[String]], ::[Map[String, String], HNil]]]
    Definition Classes
    ApiCompilerLowPrio
  17. type DataWithBody[Bd] = ::[List[String], ::[Map[String, List[String]], ::[Map[String, String], ::[Bd, HNil]]]]
    Definition Classes
    ApiCompilerLowPrio
  18. final case class Delete[A]() extends ApiElement with Product with Serializable
  19. sealed trait DeleteCall[A] extends ApiOp
  20. trait DeleteRequest[C, F[_], A] extends ApiRequest[RequestData[DeleteCall[A], Data], C, F]
    Annotations
    @implicitNotFound( ... )
  21. final case class FinalCons[H <: HList]() extends ApiList[H] with Product with Serializable

    A final element is a method describing the request type.

  22. final case class Get[A]() extends ApiElement with Product with Serializable
  23. sealed trait GetCall[A] extends ApiOp
  24. trait GetRequest[C, F[_], A] extends ApiRequest[RequestData[GetCall[A], Data], C, F]
    Annotations
    @implicitNotFound( ... )
  25. sealed trait HListToComposition[H <: HList] extends AnyRef

    Transform apis composed in a HList into ApiComposition representation.

  26. trait HListToCompositionLowPrio extends AnyRef
  27. final case class HeaderCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable

    Last set element is a header.

  28. final class HeaderHelper[A] extends AnyRef
  29. sealed trait HeaderInput extends ApiOp
  30. final case class HeaderParam[S <: Symbol, A](name: Lt[S]) extends ApiElement with Product with Serializable

    Header which represents its key as singleton type and describes the value type.

    Header which represents its key as singleton type and describes the value type.

    name

    header key

  31. type In2[K0, V0, K1, V1] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], HNil]]
    Definition Classes
    ApiCompilerOps
  32. type In3[K0, V0, K1, V1, K2, V2] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], HNil]]]
    Definition Classes
    ApiCompilerOps
  33. type In4[K0, V0, K1, V1, K2, V2, K3, V3] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], ::[FieldType[K3, V3], HNil]]]]
    Definition Classes
    ApiCompilerOps
  34. type In5[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], ::[FieldType[K3, V3], ::[FieldType[K4, V4], HNil]]]]]
    Definition Classes
    ApiCompilerOps
  35. type In6[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], ::[FieldType[K3, V3], ::[FieldType[K4, V4], ::[FieldType[K5, V5], HNil]]]]]]
    Definition Classes
    ApiCompilerOps
  36. type In7[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5, K6, V6] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], ::[FieldType[K3, V3], ::[FieldType[K4, V4], ::[FieldType[K5, V5], ::[FieldType[K6, V6], HNil]]]]]]]
    Definition Classes
    ApiCompilerOps
  37. type In8[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5, K6, V6, K7, V7] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], ::[FieldType[K3, V3], ::[FieldType[K4, V4], ::[FieldType[K5, V5], ::[FieldType[K6, V6], ::[FieldType[K7, V7], HNil]]]]]]]]
    Definition Classes
    ApiCompilerOps
  38. final case class Path[S](wit: Lt[S]) extends ApiElement with Product with Serializable

    Static path element represented as singleton type.

    Static path element represented as singleton type.

    wit

    singleton type of static path element

  39. final case class PathCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable

    Last set element is a path.

  40. final case class Post[A]() extends ApiElement with Product with Serializable
  41. sealed trait PostCall[A] extends ApiOp
  42. trait PostRequest[C, F[_], A] extends ApiRequest[RequestData[PostCall[A], Data], C, F]
    Annotations
    @implicitNotFound( ... )
  43. final case class PostWithBody[Bd, A]() extends ApiElement with Product with Serializable
  44. sealed trait PostWithBodyCall[Bd, A] extends ApiOp
  45. trait PostWithBodyRequest[C, F[_], Bd, A] extends ApiRequest[RequestData[PostWithBodyCall[Bd, A], DataWithBody[Bd]], C, F]
    Annotations
    @implicitNotFound( ... )
  46. final case class Put[A]() extends ApiElement with Product with Serializable
  47. sealed trait PutCall[A] extends ApiOp
  48. trait PutRequest[C, F[_], A] extends ApiRequest[RequestData[PutCall[A], Data], C, F]
    Annotations
    @implicitNotFound( ... )
  49. final case class PutWithBody[Bd, A]() extends ApiElement with Product with Serializable
  50. sealed trait PutWithBodyCall[Bd, A] extends ApiOp
  51. trait PutWithBodyRequest[C, F[_], Bd, A] extends ApiRequest[RequestData[PutWithBodyCall[Bd, A], DataWithBody[Bd]], C, F]
    Annotations
    @implicitNotFound( ... )
  52. final case class QueryCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable

    Last set element is a query parameter.

  53. final class QueryHelper[A] extends AnyRef
  54. sealed trait QueryInput extends ApiOp
  55. final case class QueryParam[S <: Symbol, A](name: Lt[S]) extends ApiElement with Product with Serializable

    Query parameter which represents its key as singleton type and describes the value type.

    Query parameter which represents its key as singleton type and describes the value type.

    name

    query key

  56. final case class RawHeadersCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable

    Last set element is a header.

  57. sealed trait RawHeadersInput extends ApiOp
  58. final case class ReqBody[A]() extends ApiElement with Product with Serializable

    Request body type description.

  59. type RequestData[R, D <: HList] = ::[FieldType[R, D], HNil]
    Definition Classes
    ApiCompilerLowPrio
  60. final case class SegmentCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable

    Last set element is a segment.

  61. final class SegmentHelper[A] extends AnyRef
  62. sealed trait SegmentInput extends ApiOp
  63. final case class SegmentParam[S <: Symbol, A](name: Lt[S]) extends ApiElement with Product with Serializable

    Dynamically set segment within an URI which has a unique name to reference it on input.

    Dynamically set segment within an URI which has a unique name to reference it on input.

    name

    unique name reference

  64. type Transformed[El <: HList, In <: HList, D <: HList] = (El, In)
  65. sealed trait TypeLevelFoldFunction[In, Agg] extends AnyRef

    Reimplements shapeles Case2 but on the type level (no real HList instance)

    Reimplements shapeles Case2 but on the type level (no real HList instance)

    Annotations
    @implicitNotFound( ... )
  66. sealed trait TypeLevelFoldLeft[H <: HList, Agg] extends Serializable

    Reimplements shapeless LeftFolder but on the type level (no real HList instance)

    Reimplements shapeless LeftFolder but on the type level (no real HList instance)

    Annotations
    @implicitNotFound( ... )
  67. trait TypeLevelFoldLeftList[H <: HList] extends AnyRef

    Helper to work on a composition of HLists we want to fold over.

  68. trait TypeLevelFoldLeftListLowPrio extends AnyRef
  69. trait TypeLevelFoldLeftLowPrio extends AnyRef
  70. final case class WithBodyCons[Bd, H <: HList]() extends ApiList[H] with Product with Serializable

    Last set element is a request body.

  71. implicit class ApiOps0[El <: HList, D <: HList] extends AnyRef
    Definition Classes
    ApiCompilerOps
  72. implicit class ApiOps1[El <: HList, D <: HList, K0, V0] extends BaseApiOps[El, ::[FieldType[K0, V0], HNil], D]
    Definition Classes
    ApiCompilerOps
  73. implicit class ApiOps2[El <: HList, D <: HList, K0, V0, K1, V1] extends BaseApiOps[El, In2[K0, V0, K1, V1], D]
    Definition Classes
    ApiCompilerOps
  74. implicit class ApiOps3[El <: HList, D <: HList, K0, V0, K1, V1, K2, V2] extends BaseApiOps[El, In3[K0, V0, K1, V1, K2, V2], D]
    Definition Classes
    ApiCompilerOps
  75. implicit class ApiOps4[El <: HList, D <: HList, K0, V0, K1, V1, K2, V2, K3, V3] extends BaseApiOps[El, In4[K0, V0, K1, V1, K2, V2, K3, V3], D]
    Definition Classes
    ApiCompilerOps
  76. implicit class ApiOps5[El <: HList, D <: HList, K0, V0, K1, V1, K2, V2, K3, V3, K4, V4] extends BaseApiOps[El, In5[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4], D]
    Definition Classes
    ApiCompilerOps
  77. implicit class ApiOps6[El <: HList, D <: HList, K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5] extends BaseApiOps[El, In6[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5], D]
    Definition Classes
    ApiCompilerOps
  78. implicit class ApiOps7[El <: HList, D <: HList, K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5, K6, V6] extends BaseApiOps[El, In7[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5, K6, V6], D]
    Definition Classes
    ApiCompilerOps
  79. implicit class ApiOps8[El <: HList, D <: HList, K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5, K6, V6, K7, V7] extends BaseApiOps[El, In8[K0, V0, K1, V1, K2, V2, K3, V3, K4, V4, K5, V5, K6, V6, K7, V7], D]
    Definition Classes
    ApiCompilerOps
  80. implicit class ApiOpsN[El <: HList, D <: HList, In <: HList] extends BaseApiOps[El, In, D]
    Definition Classes
    ApiCompilerOps

Value Members

  1. def :=: EmptyCons.type
  2. final val BodyField: Aux[@@[Symbol, String("body")]]
  3. def Header[A]: HeaderHelper[A]
  4. def Query[A]: QueryHelper[A]
  5. final val RawHeadersField: Aux[@@[Symbol, String("rawHeaders")]]
  6. def Segment[A]: SegmentHelper[A]
  7. def compile[H <: HList, In <: HList, Fold <: HList, HL <: HList, Out <: HList](folders: Aux[H, In, Fold])(implicit compilers: Aux[Fold, HL], composition: HListToComposition[HL]): Out
  8. def compile[H <: HList, El <: HList, In <: HList, D <: HList](folder: Aux[H, (HNil, HNil), (El, In)])(implicit compiler: Aux[El, In, D]): Aux[El, In, D]
  9. implicit def compilerList[El0 <: HList, In0 <: HList, D0 <: HList, T <: HList](implicit compiler0: Aux[El0, In0, D0], list: ApiCompilerList[T]): ApiCompilerList[::[Transformed[El0, In0, D0], T]] { ... /* 2 definitions in type refinement */ }
    Definition Classes
    ApiCompilerListLowPrio
  10. implicit def consComposition[El <: HList, In <: HList, D <: HList, T <: HList](implicit next: HListToComposition[T]): HListToComposition[::[Aux[El, In, D], T]] { type Out = typedapi.client.:|:[El,In,D,next.Out] }
    Definition Classes
    HListToCompositionLowPrio
  11. implicit def deleteCompiler[A]: ApiCompiler[::[DeleteCall[A], HNil], HNil] { type Out = typedapi.client.package.RequestData[typedapi.client.DeleteCall[A],typedapi.client.package.Data] }
    Definition Classes
    ApiCompilerLowPrio
  12. implicit def deleteTransformer[A]: Aux[Delete[A], (HNil, HNil), (::[DeleteCall[A], HNil], HNil)]
    Definition Classes
    ApiTransformer
  13. implicit def foldCase[H, T <: HList, Agg, FtOut, FOut](implicit f: Aux[H, Agg, FtOut], next: Lazy[Aux[T, FtOut, FOut]]): Aux[::[H, T], Agg, FOut]
    Definition Classes
    TypeLevelFoldLeftLowPrio
  14. implicit def folderLeftList[Api <: HList, Agg, T <: HList](implicit folder0: TypeLevelFoldLeft[Api, Agg], list: TypeLevelFoldLeftList[T]): TypeLevelFoldLeftList[::[Api, T]] { ... /* 2 definitions in type refinement */ }
    Definition Classes
    TypeLevelFoldLeftListLowPrio
  15. implicit def getCompiler[A]: ApiCompiler[::[GetCall[A], HNil], HNil] { type Out = typedapi.client.package.RequestData[typedapi.client.GetCall[A],typedapi.client.package.Data] }
    Definition Classes
    ApiCompilerLowPrio
  16. implicit def getTransformer[A]: Aux[Get[A], (HNil, HNil), (::[GetCall[A], HNil], HNil)]
    Definition Classes
    ApiTransformer
  17. implicit def headerElementTransformer[S <: Symbol, A, El <: HList, In <: HList]: Aux[HeaderParam[S, A], (El, In), (::[HeaderInput, El], ::[FieldType[S, A], In])]
    Definition Classes
    ApiTransformer
  18. implicit def headersInputCompiler[T <: HList, K <: Symbol, V, In <: HList](implicit wit: Aux[K], compiler: ApiCompiler[T, In]): ApiCompiler[::[HeaderInput, T], ::[FieldType[K, V], In]] { type Out = compiler.Out }
    Definition Classes
    ApiCompilerLowPrio
  19. implicit def hnilCase[Agg]: Aux[HNil, Agg, Agg]
    Definition Classes
    TypeLevelFoldLeftLowPrio
  20. implicit val hnilComposition: HListToComposition[HNil] { type Out = typedapi.client.=:.type }
    Definition Classes
    HListToCompositionLowPrio
  21. implicit def lastCompilerList[El0 <: HList, In0 <: HList, D0 <: HList](implicit compiler0: Aux[El0, In0, D0]): ApiCompilerList[::[Transformed[El0, In0, D0], HNil]] { ... /* 2 definitions in type refinement */ }
    Definition Classes
    ApiCompilerListLowPrio
  22. implicit def lastFoldLeftList[H <: HList, Agg](implicit folder0: TypeLevelFoldLeft[H, Agg]): TypeLevelFoldLeftList[::[H, HNil]] { ... /* 2 definitions in type refinement */ }
    Definition Classes
    TypeLevelFoldLeftListLowPrio
  23. implicit def pathCompiler[S, T <: HList, In <: HList](implicit wit: Aux[S], compiler: ApiCompiler[T, In]): ApiCompiler[::[S, T], In] { type Out = compiler.Out }
    Definition Classes
    ApiCompilerLowPrio
  24. implicit def pathElementTransformer[S, El <: HList, In <: HList]: Aux[Path[S], (El, In), (::[S, El], In)]
    Definition Classes
    ApiTransformer
  25. implicit def postCompiler[A]: ApiCompiler[::[PostCall[A], HNil], HNil] { type Out = typedapi.client.package.RequestData[typedapi.client.PostCall[A],typedapi.client.package.Data] }
    Definition Classes
    ApiCompilerLowPrio
  26. implicit def postTransformer[A]: Aux[Post[A], (HNil, HNil), (::[PostCall[A], HNil], HNil)]
    Definition Classes
    ApiTransformer
  27. implicit def postWithBodyCompiler[Bd, A]: ApiCompiler[::[PostWithBodyCall[Bd, A], HNil], ::[FieldType[(BodyField)#T, Bd], HNil]] { type Out = typedapi.client.package.RequestData[typedapi.client.PostWithBodyCall[Bd,A],typedapi.client.package.DataWithBody[Bd]] }
    Definition Classes
    ApiCompilerLowPrio
  28. implicit def postWithBodyTransformer[Bd, A]: Aux[PostWithBody[Bd, A], (HNil, HNil), (::[PostWithBodyCall[Bd, A], HNil], ::[FieldType[(BodyField)#T, Bd], HNil])]
    Definition Classes
    ApiTransformer
  29. implicit def putCompiler[A]: ApiCompiler[::[PutCall[A], HNil], HNil] { type Out = typedapi.client.package.RequestData[typedapi.client.PutCall[A],typedapi.client.package.Data] }
    Definition Classes
    ApiCompilerLowPrio
  30. implicit def putTransformer[A]: Aux[Put[A], (HNil, HNil), (::[PutCall[A], HNil], HNil)]
    Definition Classes
    ApiTransformer
  31. implicit def putWithBodyCompiler[Bd, A]: ApiCompiler[::[PutWithBodyCall[Bd, A], HNil], ::[FieldType[(BodyField)#T, Bd], HNil]] { type Out = typedapi.client.package.RequestData[typedapi.client.PutWithBodyCall[Bd,A],typedapi.client.package.DataWithBody[Bd]] }
    Definition Classes
    ApiCompilerLowPrio
  32. implicit def putWithBodyTransformer[Bd, A]: Aux[PutWithBody[Bd, A], (HNil, HNil), (::[PutWithBodyCall[Bd, A], HNil], ::[FieldType[(BodyField)#T, Bd], HNil])]
    Definition Classes
    ApiTransformer
  33. implicit def queryElementTransformer[S <: Symbol, A, El <: HList, In <: HList]: Aux[QueryParam[S, A], (El, In), (::[QueryInput, El], ::[FieldType[S, A], In])]
    Definition Classes
    ApiTransformer
  34. implicit def queryInputCompiler[T <: HList, K <: Symbol, V, In <: HList](implicit wit: Aux[K], compiler: ApiCompiler[T, In]): ApiCompiler[::[QueryInput, T], ::[FieldType[K, V], In]] { type Out = compiler.Out }
    Definition Classes
    ApiCompilerLowPrio
  35. implicit def queryListElementTransformer[S <: Symbol, A, El <: HList, In <: HList]: Aux[QueryParam[S, List[A]], (El, In), (::[QueryInput, El], ::[FieldType[S, List[A]], In])]
    Definition Classes
    ApiTransformer
  36. implicit def queryListInputCompiler[T <: HList, K <: Symbol, V, In <: HList](implicit wit: Aux[K], compiler: ApiCompiler[T, In]): ApiCompiler[::[QueryInput, T], ::[FieldType[K, List[V]], In]] { type Out = compiler.Out }
    Definition Classes
    ApiCompilerMediumPrio
  37. implicit def rawHeadersElementTransformer[El <: HList, In <: HList]: Aux[RawHeaders.type, (El, In), (::[RawHeadersInput, El], ::[FieldType[(RawHeadersField)#T, Map[String, String]], In])]
    Definition Classes
    ApiTransformer
  38. implicit def rawHeadersInputCompiler[T <: HList, In <: HList](implicit compiler: ApiCompiler[T, In]): ApiCompiler[::[RawHeadersInput, T], ::[FieldType[(RawHeadersField)#T, Map[String, String]], In]] { type Out = compiler.Out }
    Definition Classes
    ApiCompilerLowPrio
  39. implicit def segmentElementTransformer[S <: Symbol, A, El <: HList, In <: HList]: Aux[SegmentParam[S, A], (El, In), (::[SegmentInput, El], ::[FieldType[S, A], In])]
    Definition Classes
    ApiTransformer
  40. implicit def segmentInputCompiler[T <: HList, K, V, In <: HList](implicit compiler: ApiCompiler[T, In]): ApiCompiler[::[SegmentInput, T], ::[FieldType[K, V], In]] { type Out = compiler.Out }
    Definition Classes
    ApiCompilerLowPrio
  41. def transform[H <: HList, In <: HList, Out <: HList](apiLists: CompositionCons[H])(implicit folders: Aux[H, In, Out]): Aux[H, In, Out]
  42. def transform[H <: HList, Out](apiList: FinalCons[H])(implicit folder: Aux[H, (HNil, HNil), Out]): Aux[H, (HNil, HNil), Out]
  43. object =: extends ApiComposition with Product with Serializable
  44. object ApiCompiler
  45. object ApiCompilerList
  46. object ClientManager
  47. object EmptyCons extends ApiListWithOps[HNil] with Product with Serializable

    Initial element with empty api description.

  48. object RawHeaders extends ApiElement with Product with Serializable

    Convenience class to add headers as Map[String, String] patch.

    Convenience class to add headers as Map[String, String] patch. This class cannot guarantee type safety.

  49. object TypeLevelFoldFunction
  50. object TypeLevelFoldLeft extends Serializable
  51. object TypeLevelFoldLeftList
  52. object TypedApi

Inherited from ApiCompilerOps

Inherited from ApiCompilerListLowPrio

Inherited from ApiCompilerMediumPrio

Inherited from ApiCompilerLowPrio

Inherited from ApiTransformer

Inherited from TypeLevelFoldLeftLowPrio

Inherited from HListToCompositionLowPrio

Inherited from AnyRef

Inherited from Any

Ungrouped