| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Web.Spock.Wire
- 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
Constructors
| SpockState | |
Fields
| |
Instances
| Monad m => MonadState (SpockState m) (SpockT m) |
data UploadedFile Source
Constructors
| UploadedFile | |
Fields
| |
data RequestInfo Source
Constructors
| RequestInfo | |
Fields
| |
Instances
| Monad m => MonadReader RequestInfo (ActionT m) |
data ResponseBody Source
Constructors
| ResponseFile FilePath | |
| ResponseLBS ByteString | |
| ResponseRedirect Text |
Instances
data ResponseState Source
Constructors
| ResponseState | |
Fields
| |
Instances
data ActionInterupt Source
Constructors
| ActionRedirect Text | |
| ActionTryNext | |
| ActionError String | |
| ActionDone |
Instances
Constructors
| ActionT | |
Fields
| |
Instances
| 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) |
Constructors
| SpockT | |
Fields
| |
Instances
| 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/userUSER
buildRoutingTree :: SpockRouteMap m -> SpockTreeMap m Source