package server
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- server
- MergeToEndpointLowPrio
- PrecompileEndpointLowPrio
- ServeToListLowPrio
- FoldResultEvidenceLowPrio
- RouteExtractorMediumPrio
- RouteExtractorLowPrio
- ValueExtractorInstances
- FunctionApplyLowPrio
- ApiTransformer
- TypeLevelFoldLeftListLowPrio
- TypeLevelFoldLeftLowPrio
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- All
Type Members
- final case class BadRouteRequest(msg: String) extends ExtractionError with Product with Serializable
- final case class BodyType[Bd]() extends Product with Serializable
-
abstract
class
Endpoint[El <: HList, In <: HList, ROut, CIn <: HList, F[_], Out] extends AnyRef
Container storing the extractor and function of an endpoint.
- final class EndpointCompositionDefinition[H <: HList, Comp[_[_]] <: HList, Pre[_[_]] <: HList] extends AnyRef
-
trait
EndpointConstructor[F[_], Fun, El <: HList, In <: HList, ROut, CIn <: HList, Out] extends AnyRef
Fuses RouteExtractor, FunApply and endpoint function fun into an Endpoint.
- final class EndpointDefinition[El <: HList, In <: HList, ROut, CIn <: HList, Fun[_[_]], Out] extends AnyRef
-
sealed
trait
EndpointExecutor[El <: HList, In <: HList, ROut, CIn <: HList, F[_], FOut] extends AnyRef
- Annotations
- @implicitNotFound( ... )
-
final
case class
EndpointRequest(method: String, uri: List[String], queries: Map[String, List[String]], headers: Map[String, String]) extends Product with Serializable
Request representation which every server implementation has to provide.
- sealed trait ExtractionError extends AnyRef
-
trait
FunctionApply[In <: HList, Out] extends AnyRef
- Annotations
- @implicitNotFound( ... )
- trait FunctionApplyLowPrio extends AnyRef
-
final
class
Function0[Out] extends FunctionApply[HNil, Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function1[KA, A, Out] extends FunctionApply[::[FieldType[KA, A], HNil], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function2[KA, A, KB, B, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], HNil]], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function3[KA, A, KB, B, KC, C, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], ::[FieldType[KC, C], HNil]]], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function4[KA, A, KB, B, KC, C, KD, D, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], ::[FieldType[KC, C], ::[FieldType[KD, D], HNil]]]], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function5[KA, A, KB, B, KC, C, KD, D, KE, E, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], ::[FieldType[KC, C], ::[FieldType[KD, D], ::[FieldType[KE, E], HNil]]]]], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function6[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], ::[FieldType[KC, C], ::[FieldType[KD, D], ::[FieldType[KA, A], ::[FieldType[KF, F], HNil]]]]]], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function7[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, KG, G, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], ::[FieldType[KC, C], ::[FieldType[KD, D], ::[FieldType[KA, A], ::[FieldType[KF, F], ::[FieldType[KG, G], HNil]]]]]]], Out]
- Definition Classes
- FunctionApplyLowPrio
-
final
class
Function8[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, KG, G, KH, H, Out] extends FunctionApply[::[FieldType[KA, A], ::[FieldType[KB, B], ::[FieldType[KC, C], ::[FieldType[KD, D], ::[FieldType[KA, A], ::[FieldType[KF, F], ::[FieldType[KG, G], ::[FieldType[KH, H], HNil]]]]]]]], Out]
- Definition Classes
- FunctionApplyLowPrio
- final case class FunctionComposition[Comp <: HList](funs: Comp) extends Product with Serializable
-
sealed
trait
MergeToEndpoint[F[_], Pre <: HList, Fun <: HList] extends AnyRef
- Annotations
- @implicitNotFound( ... )
- trait MergeToEndpointLowPrio extends AnyRef
- trait MountEndpoints[S, Req, Resp] extends AnyRef
- trait NoReqBodyExecutor[El <: HList, In <: HList, CIn <: HList, F[_], FOut] extends EndpointExecutor[El, In, CIn, CIn, F, FOut]
-
sealed
trait
PrecompileEndpoint[H <: HList] extends AnyRef
Compiles RouteExtractor and FunApply for every API endpoint and generates expected list of endpoint functions.
Compiles RouteExtractor and FunApply for every API endpoint and generates expected list of endpoint functions.
- Annotations
- @implicitNotFound( ... )
- trait PrecompileEndpointLowPrio extends AnyRef
-
final
class
Precompiled[El <: HList, In <: HList, CIn <: HList, Fun[_[_]], Out0, ROut, CompT[_[_]] <: HList, OutT[_[_]] <: HList, T <: HList] extends PrecompileEndpoint[::[(El, In, Out0), T]]
- Definition Classes
- PrecompileEndpointLowPrio
- trait ReqBodyExecutor[El <: HList, In <: HList, Bd, ROut <: HList, POut <: HList, CIn <: HList, F[_], FOut] extends EndpointExecutor[El, In, (BodyType[Bd], ROut), CIn, F, FOut]
-
trait
RouteExtractor[El <: HList, In <: HList, EIn <: HList] extends AnyRef
Build a function which extracts inputs from a given requests based on the API.
Build a function which extracts inputs from a given requests based on the API.
- if a request path does not fit the API definition
RouteNotFound
is returned - if a query, header, body, etc is missing
BadRouteRequest
is returned
- Annotations
- @implicitNotFound( ... )
- if a request path does not fit the API definition
- trait RouteExtractorLowPrio extends AnyRef
- trait RouteExtractorMediumPrio extends RouteExtractorLowPrio
-
trait
Serve[Req, Resp] extends AnyRef
Reduces an Endpoint and its EndpointExecutor to a simple Request => Response function.
-
sealed
trait
ServeToList[H <: HList, Req, Resp] extends AnyRef
- Annotations
- @implicitNotFound( ... )
- trait ServeToListLowPrio extends AnyRef
- final case class ServerManager[S](server: S, host: String, port: Int) extends Product with Serializable
- sealed trait ValueExtractor[A] extends (String) ⇒ Option[A]
- trait ValueExtractorInstances extends AnyRef
Value Members
-
implicit
val
booleanExtractor: ValueExtractor[Boolean] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
val
byteExtractor: ValueExtractor[Byte] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
def
deleteExtractor[EIn <: HList]: RouteExtractor[::[DeleteCall, HNil], HNil, EIn] { type Out = EIn }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
deleteTransformer[A]: Aux[DeleteElement[A], (HNil, HNil), (::[DeleteCall, HNil], HNil, A)]
- Definition Classes
- ApiTransformer
-
implicit
val
doubleExtractor: ValueExtractor[Double] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
def
evidence[El0 <: HList, In0 <: HList, Out0]: Aux[(El0, In0, Out0), El0, In0, Out0]
- Definition Classes
- FoldResultEvidenceLowPrio
-
def
extract[A](f: (String) ⇒ A, _typeDesc: String): ValueExtractor[A] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
val
floatExtractor: ValueExtractor[Float] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
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[H <: HList, Agg, T <: HList](implicit folder0: TypeLevelFoldLeft[H, Agg], list: TypeLevelFoldLeftList[T]): TypeLevelFoldLeftList[::[H, T]] { type Out = folder0.Out :: list.Out }
- Definition Classes
- TypeLevelFoldLeftListLowPrio
-
implicit
def
funApply0[Out]: Function0[Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply1[KA, A, Out]: Function1[KA, A, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply2[KA, A, KB, B, Out]: Function2[KA, A, KB, B, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply3[KA, A, KB, B, KC, C, Out]: Function3[KA, A, KB, B, KC, C, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply4[KA, A, KB, B, KC, C, KD, D, Out]: Function4[KA, A, KB, B, KC, C, KD, D, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply5[KA, A, KB, B, KC, C, KD, D, KE, E, Out]: Function5[KA, A, KB, B, KC, C, KD, D, KE, E, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply6[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, Out]: Function6[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply7[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, KG, G, Out]: Function7[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, KG, G, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
funApply8[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, KG, G, KH, H, Out]: Function8[KA, A, KB, B, KC, C, KD, D, KE, E, KF, F, KG, G, KH, H, Out]
- Definition Classes
- FunctionApplyLowPrio
-
implicit
def
getExtractor[EIn <: HList, REIn <: HList](implicit rev: Aux[EIn, REIn]): RouteExtractor[::[GetCall, HNil], HNil, EIn] { type Out = REIn }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
getTransformer[A]: Aux[GetElement[A], (HNil, HNil), (::[GetCall, HNil], HNil, A)]
- Definition Classes
- ApiTransformer
-
implicit
def
headerElementTransformer[S <: Symbol, A, El <: HList, In <: HList, Out]: Aux[HeaderParam[S, A], (El, In, Out), (::[HeaderInput, El], ::[FieldType[S, A], In], Out)]
- Definition Classes
- ApiTransformer
-
implicit
def
headerExtractor[El <: HList, K <: Symbol, A, In <: HList, EIn <: HList](implicit wit: Aux[K], value: ValueExtractor[A], next: RouteExtractor[El, In, ::[A, EIn]]): RouteExtractor[::[HeaderInput, El], ::[FieldType[K, A], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
headerOptExtractor[El <: HList, K <: Symbol, A, In <: HList, EIn <: HList](implicit wit: Aux[K], value: ValueExtractor[A], next: RouteExtractor[El, In, ::[Option[A], EIn]]): RouteExtractor[::[HeaderInput, El], ::[FieldType[K, Option[A]], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
hnilCase[Agg]: Aux[HNil, Agg, Agg]
- Definition Classes
- TypeLevelFoldLeftLowPrio
-
implicit
def
hnilMergeCase[F[_]]: MergeToEndpoint[F, HNil, HNil] { type Out = shapeless.HNil }
- Definition Classes
- MergeToEndpointLowPrio
-
implicit
val
hnilPrecompiledCase: PrecompileEndpoint[HNil] { ... /* 3 definitions in type refinement */ }
- Definition Classes
- PrecompileEndpointLowPrio
-
implicit
def
hnilToList[Req, Resp]: ServeToList[HNil, Req, Resp]
- Definition Classes
- ServeToListLowPrio
-
implicit
val
intExtractor: ValueExtractor[Int] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
def
lastFoldLeftList[H <: HList, Agg](implicit folder0: TypeLevelFoldLeft[H, Agg]): TypeLevelFoldLeftList[::[H, HNil]] { type Out = folder0.Out :: shapeless.HNil }
- Definition Classes
- TypeLevelFoldLeftListLowPrio
- def link[H <: HList, Fold <: HList](apiLists: CompositionCons[H])(implicit folder: Aux[H, Fold], pre: PrecompileEndpoint[Fold]): EndpointCompositionDefinition[Fold, Comp, Out]
- def link[H <: HList, Fold, El <: HList, In <: HList, ROut, Out](apiList: ApiTypeCarrier[H])(implicit folder: Aux[H, (HNil, HNil), Fold], ev: Aux[Fold, El, In, Out], extractor: Aux[El, In, HNil, ROut], funApply: FunctionApply[In, Out]): EndpointDefinition[El, In, ROut, CIn, Fun, Out]
-
implicit
val
longExtractor: ValueExtractor[Long] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
def
mergeCase[F[_], El <: HList, In <: HList, Out0, ROut, CIn <: HList, PreT <: HList, Fun, FunT <: HList](implicit executor: EndpointExecutor[El, In, ROut, CIn, F, Out0], next: MergeToEndpoint[F, PreT, FunT]): MergeToEndpoint[F, ::[EndpointConstructor[F, Fun, El, In, ROut, CIn, Out0], PreT], ::[Fun, FunT]] { type Out = typedapi.server.Serve[executor.R,executor.Out] :: next.Out }
- Definition Classes
- MergeToEndpointLowPrio
- def mount[S, End <: HList, Req, Resp, Out](server: ServerManager[S], end: End)(implicit toList: ServeToList[End, Req, Resp], mounting: Aux[S, Req, Resp, Out]): Out
- def mount[S, El <: HList, In <: HList, ROut, CIn <: HList, F[_], FOut, Req, Resp, Out](server: ServerManager[S], endpoint: Endpoint[El, In, ROut, CIn, F, FOut])(implicit executor: Aux[Req, El, In, ROut, CIn, F, FOut, Resp], mounting: Aux[S, Req, Resp, Out]): Out
-
implicit
def
pathElementTransformer[S, El <: HList, In <: HList, Out]: Aux[PathElement[S], (El, In, Out), (::[S, El], In, Out)]
- Definition Classes
- ApiTransformer
-
implicit
def
pathExtractor[S, El <: HList, In <: HList, EIn <: HList](implicit wit: Aux[S], next: RouteExtractor[El, In, EIn]): RouteExtractor[::[S, El], In, EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorLowPrio
-
implicit
def
postExtractor[EIn <: HList]: RouteExtractor[::[PostCall, HNil], HNil, EIn] { type Out = EIn }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
postTransformer[A]: Aux[PostElement[A], (HNil, HNil), (::[PostCall, HNil], HNil, A)]
- Definition Classes
- ApiTransformer
-
implicit
def
postWithBodyExtractor[Bd, EIn <: HList, REIn <: HList]: RouteExtractor[::[PostWithBodyCall[Bd], HNil], ::[FieldType[(BodyField)#T, Bd], HNil], EIn] { type Out = (typedapi.server.BodyType[Bd], EIn) }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
postWithBodyTransformer[Bd, A]: Aux[PostWithBodyElement[Bd, A], (HNil, HNil), (::[PostWithBodyCall[Bd], HNil], ::[FieldType[(BodyField)#T, Bd], HNil], A)]
- Definition Classes
- ApiTransformer
-
implicit
def
precompiledCase[El <: HList, In <: HList, Out, ROut, T <: HList](implicit extractor: Aux[El, In, HNil, ROut], funApply: FunctionApply[In, Out], next: PrecompileEndpoint[T]): Precompiled[El, In, CIn, Fun, Out, ROut, Comp, Out, T]
- Definition Classes
- PrecompileEndpointLowPrio
-
implicit
def
putExtractor[EIn <: HList, REIn <: HList](implicit rev: Aux[EIn, REIn]): RouteExtractor[::[PutCall, HNil], HNil, EIn] { type Out = REIn }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
putTransformer[A]: Aux[PutElement[A], (HNil, HNil), (::[PutCall, HNil], HNil, A)]
- Definition Classes
- ApiTransformer
-
implicit
def
putWithBodyExtractor[Bd, EIn <: HList]: RouteExtractor[::[PutWithBodyCall[Bd], HNil], ::[FieldType[(BodyField)#T, Bd], HNil], EIn] { type Out = (typedapi.server.BodyType[Bd], EIn) }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
putWithBodyTransformer[Bd, A]: Aux[PutWithBodyElement[Bd, A], (HNil, HNil), (::[PutWithBodyCall[Bd], HNil], ::[FieldType[(BodyField)#T, Bd], HNil], A)]
- Definition Classes
- ApiTransformer
-
implicit
def
queryElementTransformer[S <: Symbol, A, El <: HList, In <: HList, Out]: Aux[QueryParam[S, A], (El, In, Out), (::[QueryInput, El], ::[FieldType[S, A], In], Out)]
- Definition Classes
- ApiTransformer
-
implicit
def
queryExtractor[El <: HList, K <: Symbol, A, In <: HList, EIn <: HList](implicit wit: Aux[K], value: ValueExtractor[A], next: RouteExtractor[El, In, ::[A, EIn]]): RouteExtractor[::[QueryInput, El], ::[FieldType[K, A], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
queryListElementTransformer[S <: Symbol, A, El <: HList, In <: HList, Out]: Aux[QueryParam[S, List[A]], (El, In, Out), (::[QueryInput, El], ::[FieldType[S, List[A]], In], Out)]
- Definition Classes
- ApiTransformer
-
implicit
def
queryListExtractor[El <: HList, K <: Symbol, A, In <: HList, EIn <: HList](implicit wit: Aux[K], value: ValueExtractor[A], next: RouteExtractor[El, In, ::[List[A], EIn]]): RouteExtractor[::[QueryInput, El], ::[FieldType[K, List[A]], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
queryOptListExtractor[El <: HList, K <: Symbol, A, In <: HList, EIn <: HList](implicit wit: Aux[K], value: ValueExtractor[A], next: RouteExtractor[El, In, ::[Option[A], EIn]]): RouteExtractor[::[QueryInput, El], ::[FieldType[K, Option[A]], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
rawHeaderExtractor[El <: HList, In <: HList, EIn <: HList](implicit next: RouteExtractor[El, In, ::[Map[String, String], EIn]]): RouteExtractor[::[RawHeadersInput, El], ::[FieldType[(RawHeadersField)#T, Map[String, String]], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
rawHeadersElementTransformer[El <: HList, In <: HList, Out]: Aux[RawHeadersParam.type, (El, In, Out), (::[RawHeadersInput, El], ::[FieldType[(RawHeadersField)#T, Map[String, String]], In], Out)]
- Definition Classes
- ApiTransformer
-
implicit
def
segmentElementTransformer[S <: Symbol, A, El <: HList, In <: HList, Out]: Aux[SegmentParam[S, A], (El, In, Out), (::[SegmentInput, El], ::[FieldType[S, A], In], Out)]
- Definition Classes
- ApiTransformer
-
implicit
def
segmentExtractor[El <: HList, K, A, In <: HList, EIn <: HList](implicit value: ValueExtractor[A], next: RouteExtractor[El, In, ::[A, EIn]]): RouteExtractor[::[SegmentInput, El], ::[FieldType[K, A], In], EIn] { type Out = next.Out }
- Definition Classes
- RouteExtractorMediumPrio
-
implicit
def
serveToList[Req, Resp, T <: HList](implicit next: ServeToList[T, Req, Resp]): ServeToList[::[Serve[Req, Resp], T], Req, Resp]
- Definition Classes
- ServeToListLowPrio
-
implicit
val
shortExtractor: ValueExtractor[Short] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
-
implicit
val
stringExtractor: ValueExtractor[String] { val typeDesc: String }
- Definition Classes
- ValueExtractorInstances
- object =:
- object EndpointExecutor
- object FunctionApply
- object MergeToEndpoint
- object MountEndpoints
- object PrecompileEndpoint
- object RouteExtractor
- object RouteNotFound extends ExtractionError with Product with Serializable
- object ServerManager extends Serializable
- object endpointToServe extends Poly1