Copyright | (c) 2015 Athan Clark |
---|---|
License | BSD-3 |
Maintainer | athan.clark@gmail.com |
Stability | experimental |
Portability | GHC |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Synopsis
- lookupFileExt :: Maybe AcceptHeader -> Maybe FileExt -> FileExtMap -> Maybe Response
- fileExtsToMiddleware :: MonadBaseControl IO m stM => Extractable stM => FileExtListenerT urlbase m a -> MiddlewareT m
- type AcceptHeader = ByteString
- newtype FileExtListenerT urlbase m a = FileExtListenerT {
- runFileExtListenerT :: ReaderT (Status -> Maybe Integer -> IO ()) (StateT FileExtMap m) a
- type FileExtMap = HashMap FileExt ResponseVia
- data ResponseVia = forall a.ResponseVia {
- responseData :: !a
- responseStatus :: !Status
- responseHeaders :: !ResponseHeaders
- responseFunction :: !(a -> Status -> ResponseHeaders -> Response)
- data FileExt
- getFileExt :: [Text] -> Maybe FileExt
- toExt :: (Text, Text) -> Maybe FileExt
- runResponseVia :: ResponseVia -> Response
- mapStatus :: (Status -> Status) -> ResponseVia -> ResponseVia
- mapHeaders :: (ResponseHeaders -> ResponseHeaders) -> ResponseVia -> ResponseVia
- overFileExts :: Monad m => [FileExt] -> (ResponseVia -> ResponseVia) -> FileExtListenerT urlbase m a -> FileExtListenerT urlbase m a
- getLogger :: Monad m => FileExtListenerT urlbase m (Status -> Maybe Integer -> IO ())
- execFileExtListenerT :: Monad m => FileExtListenerT urlbase m a -> Maybe (Status -> Maybe Integer -> IO ()) -> m FileExtMap
- mapFileExtMap :: Monad m => (FileExtMap -> FileExtMap) -> FileExtListenerT urlbase m a -> FileExtListenerT urlbase m a
- possibleFileExts :: [FileExt] -> AcceptHeader -> [FileExt]
- invalidEncoding :: Monad m => ResponseVia -> FileExtListenerT urlbase m ()
- module Network.Wai.Middleware.ContentType.Blaze
- module Network.Wai.Middleware.ContentType.ByteString
- module Network.Wai.Middleware.ContentType.Cassius
- module Network.Wai.Middleware.ContentType.Clay
- module Network.Wai.Middleware.ContentType.Json
- module Network.Wai.Middleware.ContentType.Julius
- module Network.Wai.Middleware.ContentType.Lucid
- module Network.Wai.Middleware.ContentType.Lucius
- module Network.Wai.Middleware.ContentType.Text
Documentation
lookupFileExt :: Maybe AcceptHeader -> Maybe FileExt -> FileExtMap -> Maybe Response Source #
Given an HTTP Accept
header and a content type to base lookups off of, and
a map of responses, find a response.
fileExtsToMiddleware :: MonadBaseControl IO m stM => Extractable stM => FileExtListenerT urlbase m a -> MiddlewareT m Source #
Re-Exports
type AcceptHeader = ByteString Source #
newtype FileExtListenerT urlbase m a Source #
The monad for our DSL - when using the combinators, our result will be this type:
myListener :: FileExtListenerT base (MiddlewareT m) m () myListener = do text "Text!" json ("Json!" :: T.Text)
FileExtListenerT | |
|
Instances
type FileExtMap = HashMap FileExt ResponseVia Source #
data ResponseVia Source #
forall a. ResponseVia | |
|
Instances
Monad m => MonadState FileExtMap (FileExtListenerT urlbase m) Source # | |
Defined in Network.Wai.Middleware.ContentType.Types get :: FileExtListenerT urlbase m FileExtMap # put :: FileExtMap -> FileExtListenerT urlbase m () # state :: (FileExtMap -> (a, FileExtMap)) -> FileExtListenerT urlbase m a # | |
MonadBaseControl b m stM => MonadBaseControl b (FileExtListenerT urlbase m) (Compose stM ((,) FileExtMap)) Source # | |
Defined in Network.Wai.Middleware.ContentType.Types liftBaseWith :: (RunInBase (FileExtListenerT urlbase m) b (Compose stM ((,) FileExtMap)) -> b a) -> FileExtListenerT urlbase m a # restoreM :: Compose stM ((,) FileExtMap) a -> FileExtListenerT urlbase m a # | |
MonadTransControl (FileExtListenerT urlbase) ((,) FileExtMap) Source # | |
Defined in Network.Wai.Middleware.ContentType.Types liftWith :: Monad m => (Run (FileExtListenerT urlbase) ((,) FileExtMap) -> m a) -> FileExtListenerT urlbase m a # restoreT :: Monad m => m (FileExtMap, a) -> FileExtListenerT urlbase m a # |
Supported file extensions
Instances
getFileExt :: [Text] -> Maybe FileExt Source #
Gets the known file extension from a Request's pathInfo
.
toExt :: (Text, Text) -> Maybe FileExt Source #
matches a file extension (including it's prefix dot - .html
for example)
to a known one.
runResponseVia :: ResponseVia -> Response Source #
mapStatus :: (Status -> Status) -> ResponseVia -> ResponseVia Source #
mapHeaders :: (ResponseHeaders -> ResponseHeaders) -> ResponseVia -> ResponseVia Source #
overFileExts :: Monad m => [FileExt] -> (ResponseVia -> ResponseVia) -> FileExtListenerT urlbase m a -> FileExtListenerT urlbase m a Source #
execFileExtListenerT :: Monad m => FileExtListenerT urlbase m a -> Maybe (Status -> Maybe Integer -> IO ()) -> m FileExtMap Source #
mapFileExtMap :: Monad m => (FileExtMap -> FileExtMap) -> FileExtListenerT urlbase m a -> FileExtListenerT urlbase m a Source #
possibleFileExts :: [FileExt] -> AcceptHeader -> [FileExt] Source #
Takes an Accept
header and returns the other
file types handleable, in order of prescedence.
invalidEncoding :: Monad m => ResponseVia -> FileExtListenerT urlbase m () Source #
Use this combinator as the last one, as a "catch-all":
myApp = do text "foo" invalidEncoding myErrorHandler -- handles all except text/plain