| Copyright | (c) 2015 Athan Clark |
|---|---|
| License | BSD-3 |
| Maintainer | athan.clark@gmail.com |
| Stability | experimental |
| Portability | GHC |
| Safe Haskell | None |
| Language | Haskell2010 |
Network.Wai.Middleware.ContentType.Types
Description
- 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)
- 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)Constructors
| FileExtListenerT | |
Fields
| |
Instances
| (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
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