wai-middleware-content-type-0.5.2: Route to different middlewares based on the incoming Accept header.

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 
Other Text

excluding prefix period, i.e. foo

Instances

Eq FileExt Source # 

Methods

(==) :: FileExt -> FileExt -> Bool #

(/=) :: FileExt -> FileExt -> Bool #

Ord FileExt Source # 
Show FileExt Source # 
Generic FileExt Source # 

Associated Types

type Rep FileExt :: * -> * #

Methods

from :: FileExt -> Rep FileExt x #

to :: Rep FileExt x -> FileExt #

Hashable FileExt Source # 

Methods

hashWithSalt :: Int -> FileExt -> Int #

hash :: FileExt -> Int #

Monad m => MonadState FileExtMap (FileExtListenerT m) Source # 
type Rep FileExt Source # 
type Rep FileExt = D1 * (MetaData "FileExt" "Network.Wai.Middleware.ContentType.Types" "wai-middleware-content-type-0.5.2-J8FYv2lhkQkHM98BoJfm1k" False) ((:+:) * ((:+:) * (C1 * (MetaCons "Html" PrefixI False) (U1 *)) ((:+:) * (C1 * (MetaCons "Css" PrefixI False) (U1 *)) (C1 * (MetaCons "JavaScript" PrefixI False) (U1 *)))) ((:+:) * ((:+:) * (C1 * (MetaCons "Json" PrefixI False) (U1 *)) (C1 * (MetaCons "Text" PrefixI False) (U1 *))) ((:+:) * (C1 * (MetaCons "Markdown" PrefixI False) (U1 *)) (C1 * (MetaCons "Other" PrefixI False) (S1 * (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Text))))))

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.

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 # 

Methods

lift :: Monad m => m a -> FileExtListenerT m a #

MonadTransControl FileExtListenerT Source # 

Associated Types

type StT (FileExtListenerT :: (* -> *) -> * -> *) a :: * #

(Monad m, MonadUrl b f m) => MonadUrl b f (FileExtListenerT m) Source # 
MonadBaseControl b m => MonadBaseControl b (FileExtListenerT m) Source # 

Associated Types

type StM (FileExtListenerT m :: * -> *) a :: * #

MonadBase b m => MonadBase b (FileExtListenerT m) Source # 

Methods

liftBase :: b α -> FileExtListenerT m α #

MonadWriter w m => MonadWriter w (FileExtListenerT m) Source # 

Methods

writer :: (a, w) -> FileExtListenerT m a #

tell :: w -> FileExtListenerT m () #

listen :: FileExtListenerT m a -> FileExtListenerT m (a, w) #

pass :: FileExtListenerT m (a, w -> w) -> FileExtListenerT m a #

Monad m => MonadState FileExtMap (FileExtListenerT m) Source # 
MonadReader r m => MonadReader r (FileExtListenerT m) Source # 

Methods

ask :: FileExtListenerT m r #

local :: (r -> r) -> FileExtListenerT m a -> FileExtListenerT m a #

reader :: (r -> a) -> FileExtListenerT m a #

MonadError e m => MonadError e (FileExtListenerT m) Source # 
Monad m => Monad (FileExtListenerT m) Source # 
Functor m => Functor (FileExtListenerT m) Source # 

Methods

fmap :: (a -> b) -> FileExtListenerT m a -> FileExtListenerT m b #

(<$) :: a -> FileExtListenerT m b -> FileExtListenerT m a #

MonadFix m => MonadFix (FileExtListenerT m) Source # 

Methods

mfix :: (a -> FileExtListenerT m a) -> FileExtListenerT m a #

Monad m => Applicative (FileExtListenerT m) Source # 
MonadPlus m => Alternative (FileExtListenerT m) Source # 
MonadPlus m => MonadPlus (FileExtListenerT m) Source # 
MonadIO m => MonadIO (FileExtListenerT m) Source # 

Methods

liftIO :: IO a -> FileExtListenerT m a #

MonadThrow m => MonadThrow (FileExtListenerT m) Source # 

Methods

throwM :: Exception e => e -> FileExtListenerT m a #

MonadCatch m => MonadCatch (FileExtListenerT m) Source # 

Methods

catch :: Exception e => FileExtListenerT m a -> (e -> FileExtListenerT m a) -> FileExtListenerT m a #

MonadMask m => MonadMask (FileExtListenerT m) Source # 
MonadLogger m => MonadLogger (FileExtListenerT m) Source # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> FileExtListenerT m () #

MonadCont m => MonadCont (FileExtListenerT m) Source # 

Methods

callCC :: ((a -> FileExtListenerT m b) -> FileExtListenerT m a) -> FileExtListenerT m a #

(MonadResource m, MonadBase IO m) => MonadResource (FileExtListenerT m) Source # 
Monad m => Monoid (FileExtListenerT m ()) Source # 
type StT FileExtListenerT a Source # 
type StM (FileExtListenerT m) a Source # 

Utilities

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

Version of tell for StateT

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 m () Source #

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

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