Copyright | (c) 2015 Athan Clark |
---|---|
License | BSD-3 |
Maintainer | athan.clark@gmail.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
- data FileExt
- allFileExts :: [FileExt]
- getFileExt :: [Text] -> Maybe FileExt
- toExt :: Text -> Maybe FileExt
- type FileExtMap a = HashMap FileExt a
- newtype FileExtListenerT r m a = FileExtListenerT {
- runFileExtListenerT :: StateT (FileExtMap r) m a
- execFileExtListenerT :: Monad m => FileExtListenerT r m a -> m (FileExtMap r)
- mapResponse :: Monad m => ((Status -> ResponseHeaders -> Response) -> Response) -> FileExtListenerT (Status -> ResponseHeaders -> Response) m a -> FileExtListenerT Response m a
- tell' :: (Monoid w, MonadState w m) => w -> m ()
- type AcceptHeader = ByteString
- possibleFileExts :: AcceptHeader -> [FileExt]
- invalidEncoding :: Monad m => r -> FileExtListenerT r m ()
Types
Supported file extensions
allFileExts :: [FileExt] Source
All file extensions, in the order of likeliness
getFileExt :: [Text] -> Maybe FileExt Source
Gets the known file extension from a Request's pathInfo
.
toExt :: Text -> Maybe FileExt Source
matches a file extension (including it's prefix dot - .html
for example)
to a known one.
type FileExtMap a = HashMap FileExt a Source
newtype FileExtListenerT r m a Source
The monad for our DSL - when using the combinators, our result will be this type:
myListener :: FileExtListenerT (MiddlewareT m) m () myListener = do text "Text!" json ("Json!" :: T.Text)
FileExtListenerT | |
|
(Monad m, MonadUrl b f m) => MonadUrl b f (FileExtListenerT r m) Source | |
MonadWriter w m => MonadWriter w (FileExtListenerT r m) Source | |
MonadReader r' m => MonadReader r' (FileExtListenerT r m) Source | |
MonadError e m => MonadError e (FileExtListenerT r m) Source | |
MonadBaseControl b m => MonadBaseControl b (FileExtListenerT r m) Source | |
MonadBase b m => MonadBase b (FileExtListenerT r m) Source | |
MonadTrans (FileExtListenerT r) Source | |
MonadTransControl (FileExtListenerT r) Source | |
MFunctor (FileExtListenerT r) Source | |
Monad m => MonadState (FileExtMap r) (FileExtListenerT r m) Source | |
Monad m => Monad (FileExtListenerT r m) Source | |
Functor m => Functor (FileExtListenerT r m) Source | |
MonadFix m => MonadFix (FileExtListenerT r m) Source | |
Monad m => Applicative (FileExtListenerT r m) Source | |
MonadPlus m => Alternative (FileExtListenerT r m) Source | |
MonadPlus m => MonadPlus (FileExtListenerT r m) Source | |
MonadIO m => MonadIO (FileExtListenerT r m) Source | |
(MonadResource m, MonadBase IO m) => MonadResource (FileExtListenerT r m) Source | |
MonadMask m => MonadMask (FileExtListenerT r m) Source | |
MonadLogger m => MonadLogger (FileExtListenerT r m) Source | |
MonadCont m => MonadCont (FileExtListenerT r m) Source | |
MonadCatch m => MonadCatch (FileExtListenerT r m) Source | |
MonadThrow m => MonadThrow (FileExtListenerT r m) Source | |
type StT (FileExtListenerT r) a = StT (StateT (FileExtMap r)) a Source | |
type StM (FileExtListenerT r m) a = ComposeSt (FileExtListenerT r) m a Source |
execFileExtListenerT :: Monad m => FileExtListenerT r m a -> m (FileExtMap r) Source
mapResponse :: Monad m => ((Status -> ResponseHeaders -> Response) -> Response) -> FileExtListenerT (Status -> ResponseHeaders -> Response) m a -> FileExtListenerT Response m a Source
Utilities
type AcceptHeader = ByteString Source
possibleFileExts :: AcceptHeader -> [FileExt] Source
Takes an Accept
header and returns the other
file types handleable, in order of prescedence.
invalidEncoding :: Monad m => r -> FileExtListenerT r m () Source
Use this combinator as the last one, as a "catch-all":
myApp = do text "foo" invalidEncoding myErrorHandler -- handles all except text/plain