package client
- Alphabetic
- By Inheritance
- client
- ApiCompilerOps
- ApiCompilerListLowPrio
- ApiCompilerMediumPrio
- ApiCompilerLowPrio
- ApiTransformer
- TypeLevelFoldLeftListLowPrio
- TypeLevelFoldLeftLowPrio
- HListToCompositionLowPrio
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- final case class :|:[El <: HList, In <: HList, D <: HList, T <: ApiComposition](compiler: Aux[El, In, D], tail: T) extends ApiComposition with Product with Serializable
-
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( ... )
- trait ApiCompilerList[H <: HList] extends AnyRef
- trait ApiCompilerListLowPrio extends AnyRef
- trait ApiCompilerLowPrio extends AnyRef
- trait ApiCompilerMediumPrio extends ApiCompilerLowPrio
-
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))
- sealed trait ApiElement extends AnyRef
-
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
-
sealed
trait
ApiListWithOps[H <: HList] extends ApiList[H]
Basic operations.
- sealed trait ApiOp extends AnyRef
-
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.
-
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. - trait ClientManager[C] extends AnyRef
-
final
case class
CompositionCons[H <: HList]() extends ApiList[H] with Product with Serializable
Compose multiple type level api descriptions in a HList of HLists.
-
type
Data = ::[List[String], ::[Map[String, List[String]], ::[Map[String, String], HNil]]]
- Definition Classes
- ApiCompilerLowPrio
-
type
DataWithBody[Bd] = ::[List[String], ::[Map[String, List[String]], ::[Map[String, String], ::[Bd, HNil]]]]
- Definition Classes
- ApiCompilerLowPrio
- final case class Delete[A]() extends ApiElement with Product with Serializable
- sealed trait DeleteCall[A] extends ApiOp
-
trait
DeleteRequest[C, F[_], A] extends ApiRequest[RequestData[DeleteCall[A], Data], C, F]
- Annotations
- @implicitNotFound( ... )
-
final
case class
FinalCons[H <: HList]() extends ApiList[H] with Product with Serializable
A final element is a method describing the request type.
- final case class Get[A]() extends ApiElement with Product with Serializable
- sealed trait GetCall[A] extends ApiOp
-
trait
GetRequest[C, F[_], A] extends ApiRequest[RequestData[GetCall[A], Data], C, F]
- Annotations
- @implicitNotFound( ... )
-
sealed
trait
HListToComposition[H <: HList] extends AnyRef
Transform apis composed in a HList into ApiComposition representation.
- trait HListToCompositionLowPrio extends AnyRef
-
final
case class
HeaderCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable
Last set element is a header.
- final class HeaderHelper[A] extends AnyRef
- sealed trait HeaderInput extends ApiOp
-
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
-
type
In2[K0, V0, K1, V1] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], HNil]]
- Definition Classes
- ApiCompilerOps
-
type
In3[K0, V0, K1, V1, K2, V2] = ::[FieldType[K0, V0], ::[FieldType[K1, V1], ::[FieldType[K2, V2], HNil]]]
- Definition Classes
- ApiCompilerOps
-
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
-
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
-
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
-
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
-
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
-
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
-
final
case class
PathCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable
Last set element is a path.
- final case class Post[A]() extends ApiElement with Product with Serializable
- sealed trait PostCall[A] extends ApiOp
-
trait
PostRequest[C, F[_], A] extends ApiRequest[RequestData[PostCall[A], Data], C, F]
- Annotations
- @implicitNotFound( ... )
- final case class PostWithBody[Bd, A]() extends ApiElement with Product with Serializable
- sealed trait PostWithBodyCall[Bd, A] extends ApiOp
-
trait
PostWithBodyRequest[C, F[_], Bd, A] extends ApiRequest[RequestData[PostWithBodyCall[Bd, A], DataWithBody[Bd]], C, F]
- Annotations
- @implicitNotFound( ... )
- final case class Put[A]() extends ApiElement with Product with Serializable
- sealed trait PutCall[A] extends ApiOp
-
trait
PutRequest[C, F[_], A] extends ApiRequest[RequestData[PutCall[A], Data], C, F]
- Annotations
- @implicitNotFound( ... )
- final case class PutWithBody[Bd, A]() extends ApiElement with Product with Serializable
- sealed trait PutWithBodyCall[Bd, A] extends ApiOp
-
trait
PutWithBodyRequest[C, F[_], Bd, A] extends ApiRequest[RequestData[PutWithBodyCall[Bd, A], DataWithBody[Bd]], C, F]
- Annotations
- @implicitNotFound( ... )
-
final
case class
QueryCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable
Last set element is a query parameter.
- final class QueryHelper[A] extends AnyRef
- sealed trait QueryInput extends ApiOp
-
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
-
final
case class
RawHeadersCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable
Last set element is a header.
- sealed trait RawHeadersInput extends ApiOp
-
final
case class
ReqBody[A]() extends ApiElement with Product with Serializable
Request body type description.
-
type
RequestData[R, D <: HList] = ::[FieldType[R, D], HNil]
- Definition Classes
- ApiCompilerLowPrio
-
final
case class
SegmentCons[H <: HList]() extends ApiListWithOps[H] with Product with Serializable
Last set element is a segment.
- final class SegmentHelper[A] extends AnyRef
- sealed trait SegmentInput extends ApiOp
-
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
- type Transformed[El <: HList, In <: HList, D <: HList] = (El, In)
-
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( ... )
-
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( ... )
-
trait
TypeLevelFoldLeftList[H <: HList] extends AnyRef
Helper to work on a composition of HLists we want to fold over.
- trait TypeLevelFoldLeftListLowPrio extends AnyRef
- trait TypeLevelFoldLeftLowPrio extends AnyRef
-
final
case class
WithBodyCons[Bd, H <: HList]() extends ApiList[H] with Product with Serializable
Last set element is a request body.
-
implicit
class
ApiOps0[El <: HList, D <: HList] extends AnyRef
- Definition Classes
- ApiCompilerOps
-
implicit
class
ApiOps1[El <: HList, D <: HList, K0, V0] extends BaseApiOps[El, ::[FieldType[K0, V0], HNil], D]
- Definition Classes
- ApiCompilerOps
-
implicit
class
ApiOps2[El <: HList, D <: HList, K0, V0, K1, V1] extends BaseApiOps[El, In2[K0, V0, K1, V1], D]
- Definition Classes
- ApiCompilerOps
-
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
-
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
-
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
-
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
-
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
-
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
-
implicit
class
ApiOpsN[El <: HList, D <: HList, In <: HList] extends BaseApiOps[El, In, D]
- Definition Classes
- ApiCompilerOps
Value Members
- def :=: EmptyCons.type
- final val BodyField: Aux[@@[Symbol, String("body")]]
- def Header[A]: HeaderHelper[A]
- def Query[A]: QueryHelper[A]
- final val RawHeadersField: Aux[@@[Symbol, String("rawHeaders")]]
- def Segment[A]: SegmentHelper[A]
- 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
- 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]
-
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
-
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
-
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
-
implicit
def
deleteTransformer[A]: Aux[Delete[A], (HNil, HNil), (::[DeleteCall[A], HNil], HNil)]
- Definition Classes
- ApiTransformer
-
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
-
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
-
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
-
implicit
def
getTransformer[A]: Aux[Get[A], (HNil, HNil), (::[GetCall[A], HNil], HNil)]
- Definition Classes
- ApiTransformer
-
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
-
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
-
implicit
def
hnilCase[Agg]: Aux[HNil, Agg, Agg]
- Definition Classes
- TypeLevelFoldLeftLowPrio
-
implicit
val
hnilComposition: HListToComposition[HNil] { type Out = typedapi.client.=:.type }
- Definition Classes
- HListToCompositionLowPrio
-
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
-
implicit
def
lastFoldLeftList[H <: HList, Agg](implicit folder0: TypeLevelFoldLeft[H, Agg]): TypeLevelFoldLeftList[::[H, HNil]] { ... /* 2 definitions in type refinement */ }
- Definition Classes
- TypeLevelFoldLeftListLowPrio
-
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
-
implicit
def
pathElementTransformer[S, El <: HList, In <: HList]: Aux[Path[S], (El, In), (::[S, El], In)]
- Definition Classes
- ApiTransformer
-
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
-
implicit
def
postTransformer[A]: Aux[Post[A], (HNil, HNil), (::[PostCall[A], HNil], HNil)]
- Definition Classes
- ApiTransformer
-
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
-
implicit
def
postWithBodyTransformer[Bd, A]: Aux[PostWithBody[Bd, A], (HNil, HNil), (::[PostWithBodyCall[Bd, A], HNil], ::[FieldType[(BodyField)#T, Bd], HNil])]
- Definition Classes
- ApiTransformer
-
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
-
implicit
def
putTransformer[A]: Aux[Put[A], (HNil, HNil), (::[PutCall[A], HNil], HNil)]
- Definition Classes
- ApiTransformer
-
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
-
implicit
def
putWithBodyTransformer[Bd, A]: Aux[PutWithBody[Bd, A], (HNil, HNil), (::[PutWithBodyCall[Bd, A], HNil], ::[FieldType[(BodyField)#T, Bd], HNil])]
- Definition Classes
- ApiTransformer
-
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
-
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
-
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
-
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
-
implicit
def
rawHeadersElementTransformer[El <: HList, In <: HList]: Aux[RawHeaders.type, (El, In), (::[RawHeadersInput, El], ::[FieldType[(RawHeadersField)#T, Map[String, String]], In])]
- Definition Classes
- ApiTransformer
-
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
-
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
-
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
- def transform[H <: HList, In <: HList, Out <: HList](apiLists: CompositionCons[H])(implicit folders: Aux[H, In, Out]): Aux[H, In, Out]
- def transform[H <: HList, Out](apiList: FinalCons[H])(implicit folder: Aux[H, (HNil, HNil), Out]): Aux[H, (HNil, HNil), Out]
- object =: extends ApiComposition with Product with Serializable
- object ApiCompiler
- object ApiCompilerList
- object ClientManager
-
object
EmptyCons extends ApiListWithOps[HNil] with Product with Serializable
Initial element with empty api description.
-
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. - object TypeLevelFoldFunction
- object TypeLevelFoldLeft extends Serializable
- object TypeLevelFoldLeftList
- object TypedApi