Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data WebbyM appEnv a
- data RoutePattern
- type Routes appEnv = [(RoutePattern, WebbyM appEnv ())]
- mkRoute :: Method -> Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ())
- post :: Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ())
- get :: Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ())
- put :: Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ())
- type Captures = HashMap Text Text
- captures :: WebbyM appEnv Captures
- getCapture :: FromHttpApiData a => Text -> WebbyM appEnv a
- flag :: Text -> WebbyM appEnv Bool
- header :: HeaderName -> WebbyM appEnv (Maybe Text)
- headers :: WebbyM appEnv [Header]
- jsonData :: FromJSON a => WebbyM appEnv a
- param :: FromHttpApiData a => Text -> WebbyM appEnv (Maybe a)
- param_ :: FromHttpApiData a => Text -> WebbyM appEnv a
- params :: WebbyM appEnv [(Text, Text)]
- request :: WebbyM appEnv Request
- requestBodyLength :: WebbyM appEnv (Maybe Int64)
- setStatus :: Status -> WebbyM appEnv ()
- addHeader :: Header -> WebbyM appEnv ()
- setHeader :: Header -> WebbyM appEnv ()
- blob :: ByteString -> WebbyM appEnv ()
- json :: ToJSON b => b -> WebbyM appEnv ()
- text :: Text -> WebbyM appEnv ()
- stream :: StreamingBody -> WebbyM appEnv ()
- mkWebbyApp :: appEnv -> Routes appEnv -> IO Application
- data WEnv appEnv
- getAppEnv :: WebbyM appEnv appEnv
- runAppEnv :: ReaderT appEnv (WebbyM appEnv) a -> WebbyM appEnv a
- finish :: WebbyM appEnv a
- data WebbyError
Documentation
The main monad transformer stack used in the web-framework.
The type of a handler for a request is `WebbyM appEnv ()`. The
appEnv
parameter is used by the web application to store an
(read-only) environment. For e.g. it can be used to store a
database connection pool.
Instances
Monad (WebbyM appEnv) Source # | |
Functor (WebbyM appEnv) Source # | |
Applicative (WebbyM appEnv) Source # | |
Defined in Webby.Types pure :: a -> WebbyM appEnv a # (<*>) :: WebbyM appEnv (a -> b) -> WebbyM appEnv a -> WebbyM appEnv b # liftA2 :: (a -> b -> c) -> WebbyM appEnv a -> WebbyM appEnv b -> WebbyM appEnv c # (*>) :: WebbyM appEnv a -> WebbyM appEnv b -> WebbyM appEnv b # (<*) :: WebbyM appEnv a -> WebbyM appEnv b -> WebbyM appEnv a # | |
MonadIO (WebbyM appEnv) Source # | |
Defined in Webby.Types | |
MonadUnliftIO (WebbyM appData) Source # | |
Defined in Webby.Types | |
MonadLogger (WebbyM env) Source # | |
Defined in Webby.Types | |
MonadReader (WEnv appEnv) (WebbyM appEnv) Source # | |
Routing and handler functions
data RoutePattern Source #
Instances
Eq RoutePattern Source # | |
Defined in Webby.Types (==) :: RoutePattern -> RoutePattern -> Bool # (/=) :: RoutePattern -> RoutePattern -> Bool # | |
Show RoutePattern Source # | |
Defined in Webby.Types showsPrec :: Int -> RoutePattern -> ShowS # show :: RoutePattern -> String # showList :: [RoutePattern] -> ShowS # |
type Routes appEnv = [(RoutePattern, WebbyM appEnv ())] Source #
The Routes of a web-application are a list of mappings from a
RoutePattern
to a handler function.
mkRoute :: Method -> Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ()) Source #
Create a route for a user-provided HTTP request method, pattern and handler function.
post :: Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ()) Source #
Create a route for a POST request method, given the path pattern and handler.
get :: Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ()) Source #
Create a route for a GET request method, given the path pattern and handler.
put :: Text -> WebbyM appEnv () -> (RoutePattern, WebbyM appEnv ()) Source #
Create a route for a PUT request method, given the path pattern and handler.
Captures
getCapture :: FromHttpApiData a => Text -> WebbyM appEnv a Source #
Retrieve a particular capture (TODO: extend?)
Request parsing
Response modification
blob :: ByteString -> WebbyM appEnv () Source #
stream :: StreamingBody -> WebbyM appEnv () Source #
Application
mkWebbyApp :: appEnv -> Routes appEnv -> IO Application Source #
Use this function, to create a WAI application. It takes a
user/application defined appEnv
data type and a list of
routes. If none of the requests match a request, a default 404
response is returned.
Application context
The reader environment used by the web framework. It is parameterized by the application's environment data type.
getAppEnv :: WebbyM appEnv appEnv Source #
Retrieve the app environment given to the application at initialization.
Handler flow control
Exceptions thrown
data WebbyError Source #
Various kinds of errors thrown by this library - these can be caught by handler code.
WebbyJSONParseError Text | |
WebbyParamParseError | |
| |
WebbyMissingCapture Text |
Instances
Show WebbyError Source # | |
Defined in Webby.Types showsPrec :: Int -> WebbyError -> ShowS # show :: WebbyError -> String # showList :: [WebbyError] -> ShowS # | |
Exception WebbyError Source # | |
Defined in Webby.Types toException :: WebbyError -> SomeException # fromException :: SomeException -> Maybe WebbyError # displayException :: WebbyError -> String # |