Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data View
- data Location = Location {}
- data RoutingError
- data Router m a where
- RChoice :: Router m a -> Router m a -> Router m a
- RCapture :: FromHttpApiData x => (x -> Router m a) -> Router m a
- RQueryParam :: (FromHttpApiData x, KnownSymbol sym) => Proxy sym -> (Maybe x -> Router m a) -> Router m a
- RQueryParams :: (FromHttpApiData x, KnownSymbol sym) => Proxy sym -> ([x] -> Router m a) -> Router m a
- RQueryFlag :: KnownSymbol sym => Proxy sym -> (Bool -> Router m a) -> Router m a
- RPath :: KnownSymbol sym => Proxy sym -> Router m a -> Router m a
- RPage :: m a -> Router m a
- class HasRouter layout where
- runRoute :: forall layout m a. (HasRouter layout, MonadError RoutingError m) => String -> Proxy layout -> RouteT layout m a -> m a
- routeLoc :: MonadError RoutingError m => Location -> Router m a -> m a
- uriToLocation :: URI -> Location
Documentation
Location
is used to split the path and query of a URI into components.
data RoutingError Source
When routing, the router may fail to match a location. Either this is an unrecoverable failure, such as failing to parse a query parameter, or it is recoverable by trying another path.
A Router
contains the information necessary to execute a handler.
RChoice :: Router m a -> Router m a -> Router m a | |
RCapture :: FromHttpApiData x => (x -> Router m a) -> Router m a | |
RQueryParam :: (FromHttpApiData x, KnownSymbol sym) => Proxy sym -> (Maybe x -> Router m a) -> Router m a | |
RQueryParams :: (FromHttpApiData x, KnownSymbol sym) => Proxy sym -> ([x] -> Router m a) -> Router m a | |
RQueryFlag :: KnownSymbol sym => Proxy sym -> (Bool -> Router m a) -> Router m a | |
RPath :: KnownSymbol sym => Proxy sym -> Router m a -> Router m a | |
RPage :: m a -> Router m a |
class HasRouter layout where Source
This is similar to the HasServer
class from servant-server
.
It is the class responsible for making API combinators routable.
RuoteT
is used to build up the handler types.
Router
is returned, to be interpretted by routeLoc
.
HasRouter * View Source | |
(HasRouter * x, HasRouter * y) => HasRouter * ((:<|>) x y) Source | |
(HasRouter k sublayout, KnownSymbol sym) => HasRouter * ((:>) * k (QueryFlag sym) sublayout) Source | |
(HasRouter k sublayout, FromHttpApiData x, KnownSymbol sym) => HasRouter * ((:>) * k (QueryParams * sym x) sublayout) Source | |
(HasRouter k sublayout, FromHttpApiData x, KnownSymbol sym) => HasRouter * ((:>) * k (QueryParam * sym x) sublayout) Source | |
(HasRouter k sublayout, FromHttpApiData x) => HasRouter * ((:>) * k (Capture * sym x) sublayout) Source | |
(HasRouter k sublayout, KnownSymbol path) => HasRouter * ((:>) Symbol k path sublayout) Source |
runRoute :: forall layout m a. (HasRouter layout, MonadError RoutingError m) => String -> Proxy layout -> RouteT layout m a -> m a Source
routeLoc :: MonadError RoutingError m => Location -> Router m a -> m a Source