Safe Haskell | None |
---|---|
Language | Haskell98 |
- type SpockRoutingTree m = RoutingTree (ActionT m ())
- type SpockTreeMap m = HashMap StdMethod (SpockRoutingTree m)
- type SpockRouteMap m = HashMap StdMethod (HashMap Text (ActionT m ()))
- data SpockState m = SpockState {
- ss_treeMap :: !(SpockRouteMap m)
- ss_middleware :: [Middleware]
- ss_spockLift :: forall a. m a -> IO a
- data UploadedFile = UploadedFile {}
- data RequestInfo = RequestInfo {
- ri_request :: Request
- ri_params :: HashMap CaptureVar Text
- ri_queryParams :: [(Text, Text)]
- ri_files :: HashMap Text UploadedFile
- data ResponseBody
- data ResponseState = ResponseState {
- rs_responseHeaders :: [(Text, Text)]
- rs_status :: Status
- rs_responseBody :: ResponseBody
- type BaseRoute = Text
- data ActionInterupt
- newtype ActionT m a = ActionT {
- runActionT :: ErrorT ActionInterupt (RWST RequestInfo () ResponseState m) a
- newtype SpockT m a = SpockT {
- runSpockT :: RWST BaseRoute () (SpockState m) m a
- respStateToResponse :: ResponseState -> Response
- errorResponse :: Status -> ByteString -> ResponseState
- notFound :: Response
- invalidReq :: Response
- serverError :: ResponseState
- buildApp :: forall m. MonadIO m => (forall a. m a -> IO a) -> SpockT m () -> IO Application
- middleware :: MonadIO m => Middleware -> SpockT m ()
- defRoute :: MonadIO m => StdMethod -> Text -> ActionT m () -> SpockT m ()
- combineRoute :: Text -> Text -> Text
- subcomponent :: MonadIO m => Text -> SpockT m a -> SpockT m a
- buildRoutingTree :: SpockRouteMap m -> SpockTreeMap m
Documentation
type SpockRoutingTree m = RoutingTree (ActionT m ()) Source
type SpockTreeMap m = HashMap StdMethod (SpockRoutingTree m) Source
data SpockState m Source
SpockState | |
|
Monad m => MonadState (SpockState m) (SpockT m) |
data UploadedFile Source
data RequestInfo Source
RequestInfo | |
|
Monad m => MonadReader RequestInfo (ActionT m) |
data ResponseBody Source
data ResponseState Source
ResponseState | |
|
data ActionInterupt Source
ActionT | |
|
MonadTrans ActionT | |
Monad m => MonadError ActionInterupt (ActionT m) | |
Monad m => MonadReader RequestInfo (ActionT m) | |
Monad m => MonadState ResponseState (ActionT m) | |
Monad m => Monad (ActionT m) | |
Functor m => Functor (ActionT m) | |
(Monad m, Functor m) => Applicative (ActionT m) | |
MonadIO m => MonadIO (ActionT m) |
SpockT | |
|
MonadTrans SpockT | |
Monad m => MonadReader BaseRoute (SpockT m) | |
Monad m => Monad (SpockT m) | |
Functor m => Functor (SpockT m) | |
(Monad m, Functor m) => Applicative (SpockT m) | |
MonadIO m => MonadIO (SpockT m) | |
Monad m => MonadState (SpockState m) (SpockT m) |
errorResponse :: Status -> ByteString -> ResponseState Source
middleware :: MonadIO m => Middleware -> SpockT m () Source
Hook up a Middleware
defRoute :: MonadIO m => StdMethod -> Text -> ActionT m () -> SpockT m () Source
Define a route matching a provided StdMethod
and route
combineRoute :: Text -> Text -> Text Source
Combine two routes, ensuring that the slashes don't get messed up
subcomponent :: MonadIO m => Text -> SpockT m a -> SpockT m a Source
Define a subcomponent
subcomponent "/api" $ do get "/user" $ text "USER" post "/new-user" $ text "OK!"
>>>
curl http://localhost:8080/api/user
USER
buildRoutingTree :: SpockRouteMap m -> SpockTreeMap m Source