Safe Haskell | None |
---|---|
Language | Haskell98 |
- data ServerAPI m = ServerAPI {
- srvGetRequestMethod :: m Method
- srvGetRequestURI :: m ByteString
- srvGetRequestHeader :: HeaderName -> m (Maybe ByteString)
- srvGetRequestTime :: m HTTPDate
- data ReqData
- newReqData :: ReqData
- class HasReqData c where
- data ResourceData m
- newResourceData :: ServerAPI m -> Resource m -> ResourceData m
- class HasResourceData c m | c -> m where
- resourceData :: Lens' c (ResourceData m)
- data LogData
- handleRequest :: (Applicative m, MonadReader r m, HasResourceData r m, MonadState s m, HasReqData s, MonadCatch m, Functor n) => (forall a. m a -> n (a, ReqData, LogData)) -> n (Status, HeadersMap, Maybe Body)
Documentation
A dictionary of functions that Webcrank needs in order to make decisions.
ServerAPI | |
|
Container used to keep track of the decision state and what is known about response while processing a request.
HasReqData ReqData Source | |
Monad m => MonadState ReqData (WebcrankT m) Source |
Smart constructor for creating a ReqData
value with initial values.
data ResourceData m Source
HasResourceData (ResourceData m) m Source | |
Monad m => MonadReader (ResourceData (WebcrankT m)) (WebcrankT m) Source |
newResourceData :: ServerAPI m -> Resource m -> ResourceData m Source
class HasResourceData c m | c -> m where Source
resourceData :: Lens' c (ResourceData m) Source
:: (Applicative m, MonadReader r m, HasResourceData r m, MonadState s m, HasReqData s, MonadCatch m, Functor n) | |
=> (forall a. m a -> n (a, ReqData, LogData)) | run |
-> n (Status, HeadersMap, Maybe Body) |
Process a request according to the webmachine state diagram. Intended for
use by server API providers. run
is a function which can run process to
completion.
is provided as a starting point. For the typeWebcrankT
type WaiCrank = ReaderT (Request, HTTPDate) (WebcrankT IO)
an appropriate run
function would be
run :: Resource WaiCrank -> Request -> HTTPDate -> WaiCrank a -> IO (a, ReqData, LogData) run resource req date wa = runReaderT (runWebcrankT wa (ResourceData api resource) newReqData) (req, date)