wai-middleware-content-type-0.4.0: A simple WAI library for responding with content.

Copyright(c) 2015 Athan Clark
LicenseBSD-3
Maintainerathan.clark@gmail.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Network.Wai.Middleware.ContentType.Types

Contents

Description

 

Synopsis

Types

data FileExt Source

Supported file extensions

Constructors

Html 
Css 
JavaScript 
Json 
Text 
Markdown 

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.

data ResponseVia Source

Constructors

forall a . ResponseVia 

Fields

responseData :: !a
 
responseStatus :: !Status
 
responseHeaders :: !ResponseHeaders
 
responseFunction :: !(a -> Status -> ResponseHeaders -> Response)
 

Instances

Monad m => MonadState FileExtMap (FileExtListenerT m) Source 

mapStatus :: (Status -> Status) -> ResponseVia -> ResponseVia Source

mapHeaders :: (ResponseHeaders -> ResponseHeaders) -> ResponseVia -> ResponseVia Source

newtype FileExtListenerT 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)

Instances

MonadTrans FileExtListenerT Source 
MonadTransControl FileExtListenerT Source 
MFunctor FileExtListenerT Source 
(Monad m, MonadUrl b f m) => MonadUrl b f (FileExtListenerT m) Source 
Monad m => MonadState FileExtMap (FileExtListenerT m) Source 
MonadWriter w m => MonadWriter w (FileExtListenerT m) Source 
MonadReader r' m => MonadReader r' (FileExtListenerT m) Source 
MonadError e m => MonadError e (FileExtListenerT m) Source 
MonadBaseControl b m => MonadBaseControl b (FileExtListenerT m) Source 
MonadBase b m => MonadBase b (FileExtListenerT m) Source 
Monad m => Monad (FileExtListenerT m) Source 
Functor m => Functor (FileExtListenerT m) Source 
MonadFix m => MonadFix (FileExtListenerT m) Source 
Monad m => Applicative (FileExtListenerT m) Source 
MonadPlus m => Alternative (FileExtListenerT m) Source 
MonadPlus m => MonadPlus (FileExtListenerT m) Source 
MonadIO m => MonadIO (FileExtListenerT m) Source 
(MonadResource m, MonadBase IO m) => MonadResource (FileExtListenerT m) Source 
MonadMask m => MonadMask (FileExtListenerT m) Source 
MonadLogger m => MonadLogger (FileExtListenerT m) Source 
MonadCont m => MonadCont (FileExtListenerT m) Source 
MonadCatch m => MonadCatch (FileExtListenerT m) Source 
MonadThrow m => MonadThrow (FileExtListenerT m) Source 
type StT FileExtListenerT a = StT (StateT FileExtMap) a Source 
type StM (FileExtListenerT m) a = ComposeSt FileExtListenerT m a Source 

Utilities

tell' :: (Monoid w, MonadState w m) => w -> m () Source

Version of tell for StateT

possibleFileExts :: AcceptHeader -> [FileExt] Source

Takes an Accept header and returns the other file types handleable, in order of prescedence.

invalidEncoding :: Monad m => ResponseVia -> FileExtListenerT m () Source

Use this combinator as the last one, as a "catch-all":

myApp = do
  text "foo"
  invalidEncoding myErrorHandler -- handles all except text/plain