yesod-core-1.6.2: Creation of type-safe, RESTful web applications.

Safe HaskellNone
LanguageHaskell98

Yesod.Core.Types

Synopsis

Documentation

type SaveSession #

Arguments

 = SessionMap

The session contents after running the handler

-> IO [Header] 

newtype SessionBackend #

Constructors

SessionBackend 

Fields

data YesodRequest #

The parsed request information. This type augments the standard WAI Request with additional information.

Constructors

YesodRequest 

Fields

data YesodResponse #

An augmented WAI Response. This can either be a standard Response, or a higher-level data structure which Yesod will turn into a Response.

type RequestBodyContents = ([(Text, Text)], [(Text, FileInfo)]) #

A tuple containing both the POST parameters and submitted files.

data FileInfo #

Constructors

FileInfo 

data Approot master #

How to determine the root of the application for constructing URLs.

Note that future versions of Yesod may add new constructors without bumping the major version number. As a result, you should not pattern match on Approot values.

Constructors

ApprootRelative

No application root.

ApprootStatic !Text 
ApprootMaster !(master -> Text) 
ApprootRequest !(master -> Request -> Text) 

type BottomOfHeadAsync master #

Arguments

 = [Text]

urls to load asynchronously

-> Maybe (HtmlUrl (Route master))

widget of js to run on async completion

-> HtmlUrl (Route master)

widget to insert at the bottom of head

type Texts = [Text] #

newtype WaiSubsite #

Wrap up a normal WAI application as a Yesod subsite. Ignore parent site's middleware and isAuthorized.

Constructors

WaiSubsite 

newtype WaiSubsiteWithAuth #

Like WaiSubsite, but applies parent site's middleware and isAuthorized.

Since: 1.4.34

Instances

ParseRoute WaiSubsiteWithAuth # 
RenderRoute WaiSubsiteWithAuth # 

Associated Types

data Route WaiSubsiteWithAuth :: * #

YesodSubDispatch WaiSubsiteWithAuth master # 
Eq (Route WaiSubsiteWithAuth) # 
Ord (Route WaiSubsiteWithAuth) # 
Read (Route WaiSubsiteWithAuth) # 
Show (Route WaiSubsiteWithAuth) # 
data Route WaiSubsiteWithAuth # 

data RunHandlerEnv child site #

Constructors

RunHandlerEnv 

Fields

data HandlerData child site #

Instances

MonadReader (HandlerData site site) (HandlerFor site) # 

Methods

ask :: HandlerFor site (HandlerData site site) #

local :: (HandlerData site site -> HandlerData site site) -> HandlerFor site a -> HandlerFor site a #

reader :: (HandlerData site site -> a) -> HandlerFor site a #

MonadReader (HandlerData child master) (SubHandlerFor child master) # 

Methods

ask :: SubHandlerFor child master (HandlerData child master) #

local :: (HandlerData child master -> HandlerData child master) -> SubHandlerFor child master a -> SubHandlerFor child master a #

reader :: (HandlerData child master -> a) -> SubHandlerFor child master a #

data YesodRunnerEnv site #

Constructors

YesodRunnerEnv 

Fields

data YesodSubRunnerEnv sub parent #

Constructors

YesodSubRunnerEnv 

Fields

type ParentRunner parent = HandlerFor parent TypedContent -> YesodRunnerEnv parent -> Maybe (Route parent) -> Application #

newtype HandlerFor site a #

A generic handler monad, which can have a different subsite and master site. We define a newtype for better error message.

Constructors

HandlerFor 

Fields

Instances

Monad (HandlerFor site) # 

Methods

(>>=) :: HandlerFor site a -> (a -> HandlerFor site b) -> HandlerFor site b #

(>>) :: HandlerFor site a -> HandlerFor site b -> HandlerFor site b #

return :: a -> HandlerFor site a #

fail :: String -> HandlerFor site a #

Functor (HandlerFor site) # 

Methods

fmap :: (a -> b) -> HandlerFor site a -> HandlerFor site b #

(<$) :: a -> HandlerFor site b -> HandlerFor site a #

Applicative (HandlerFor site) # 

Methods

pure :: a -> HandlerFor site a #

(<*>) :: HandlerFor site (a -> b) -> HandlerFor site a -> HandlerFor site b #

liftA2 :: (a -> b -> c) -> HandlerFor site a -> HandlerFor site b -> HandlerFor site c #

(*>) :: HandlerFor site a -> HandlerFor site b -> HandlerFor site b #

(<*) :: HandlerFor site a -> HandlerFor site b -> HandlerFor site a #

MonadIO (HandlerFor site) # 

Methods

liftIO :: IO a -> HandlerFor site a #

MonadUnliftIO (HandlerFor site) #

Since: 1.4.38

Methods

askUnliftIO :: HandlerFor site (UnliftIO (HandlerFor site)) #

withRunInIO :: ((forall a. HandlerFor site a -> IO a) -> IO b) -> HandlerFor site b #

MonadResource (HandlerFor site) # 

Methods

liftResourceT :: ResourceT IO a -> HandlerFor site a #

MonadThrow (HandlerFor site) # 

Methods

throwM :: Exception e => e -> HandlerFor site a #

MonadLogger (HandlerFor site) # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> HandlerFor site () #

MonadLoggerIO (HandlerFor site) # 

Methods

askLoggerIO :: HandlerFor site (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadHandler (HandlerFor site) # 

Associated Types

type HandlerSite (HandlerFor site :: * -> *) :: * #

type SubHandlerSite (HandlerFor site :: * -> *) :: * #

MonadReader (HandlerData site site) (HandlerFor site) # 

Methods

ask :: HandlerFor site (HandlerData site site) #

local :: (HandlerData site site -> HandlerData site site) -> HandlerFor site a -> HandlerFor site a #

reader :: (HandlerData site site -> a) -> HandlerFor site a #

type HandlerSite (HandlerFor site) # 
type HandlerSite (HandlerFor site) = site
type SubHandlerSite (HandlerFor site) # 
type SubHandlerSite (HandlerFor site) = site

data GHState #

Constructors

GHState 

Fields

type YesodApp = YesodRequest -> ResourceT IO YesodResponse #

An extension of the basic WAI Application datatype to provide extra features needed by Yesod. Users should never need to use this directly, as the HandlerT monad and template haskell code should hide it away.

newtype WidgetFor site a #

A generic widget, allowing specification of both the subsite and master site datatypes. While this is simply a WriterT, we define a newtype for better error messages.

Constructors

WidgetFor 

Fields

Instances

((~) * site' site, (~) * a ()) => ToWidget site' (WidgetFor site a) # 

Methods

toWidget :: (MonadWidget m, (* ~ HandlerSite m) site') => WidgetFor site a -> m () #

Monad (WidgetFor site) # 

Methods

(>>=) :: WidgetFor site a -> (a -> WidgetFor site b) -> WidgetFor site b #

(>>) :: WidgetFor site a -> WidgetFor site b -> WidgetFor site b #

return :: a -> WidgetFor site a #

fail :: String -> WidgetFor site a #

Functor (WidgetFor site) # 

Methods

fmap :: (a -> b) -> WidgetFor site a -> WidgetFor site b #

(<$) :: a -> WidgetFor site b -> WidgetFor site a #

Applicative (WidgetFor site) # 

Methods

pure :: a -> WidgetFor site a #

(<*>) :: WidgetFor site (a -> b) -> WidgetFor site a -> WidgetFor site b #

liftA2 :: (a -> b -> c) -> WidgetFor site a -> WidgetFor site b -> WidgetFor site c #

(*>) :: WidgetFor site a -> WidgetFor site b -> WidgetFor site b #

(<*) :: WidgetFor site a -> WidgetFor site b -> WidgetFor site a #

MonadIO (WidgetFor site) # 

Methods

liftIO :: IO a -> WidgetFor site a #

MonadUnliftIO (WidgetFor site) #

Since: 1.4.38

Methods

askUnliftIO :: WidgetFor site (UnliftIO (WidgetFor site)) #

withRunInIO :: ((forall a. WidgetFor site a -> IO a) -> IO b) -> WidgetFor site b #

MonadResource (WidgetFor site) # 

Methods

liftResourceT :: ResourceT IO a -> WidgetFor site a #

MonadThrow (WidgetFor site) # 

Methods

throwM :: Exception e => e -> WidgetFor site a #

MonadLogger (WidgetFor site) # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WidgetFor site () #

MonadLoggerIO (WidgetFor site) # 

Methods

askLoggerIO :: WidgetFor site (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadWidget (WidgetFor site) # 

Methods

liftWidget :: WidgetFor (HandlerSite (WidgetFor site)) a -> WidgetFor site a #

MonadHandler (WidgetFor site) # 

Associated Types

type HandlerSite (WidgetFor site :: * -> *) :: * #

type SubHandlerSite (WidgetFor site :: * -> *) :: * #

MonadReader (WidgetData site) (WidgetFor site) # 

Methods

ask :: WidgetFor site (WidgetData site) #

local :: (WidgetData site -> WidgetData site) -> WidgetFor site a -> WidgetFor site a #

reader :: (WidgetData site -> a) -> WidgetFor site a #

(~) * a () => IsString (WidgetFor site a) #

A String can be trivially promoted to a widget.

For example, in a yesod-scaffold site you could use:

getHomeR = do defaultLayout "Widget text"

Methods

fromString :: String -> WidgetFor site a #

(~) * a () => Semigroup (WidgetFor site a) # 

Methods

(<>) :: WidgetFor site a -> WidgetFor site a -> WidgetFor site a #

sconcat :: NonEmpty (WidgetFor site a) -> WidgetFor site a #

stimes :: Integral b => b -> WidgetFor site a -> WidgetFor site a #

(~) * a () => Monoid (WidgetFor site a) # 

Methods

mempty :: WidgetFor site a #

mappend :: WidgetFor site a -> WidgetFor site a -> WidgetFor site a #

mconcat :: [WidgetFor site a] -> WidgetFor site a #

type HandlerSite (WidgetFor site) # 
type HandlerSite (WidgetFor site) = site
type SubHandlerSite (WidgetFor site) # 
type SubHandlerSite (WidgetFor site) = site

data WidgetData site #

Constructors

WidgetData 

Fields

Instances

MonadReader (WidgetData site) (WidgetFor site) # 

Methods

ask :: WidgetFor site (WidgetData site) #

local :: (WidgetData site -> WidgetData site) -> WidgetFor site a -> WidgetFor site a #

reader :: (WidgetData site -> a) -> WidgetFor site a #

tellWidget :: GWData (Route site) -> WidgetFor site () #

type RY master = Route master -> [(Text, Text)] -> Text #

newtype CssBuilder #

Newtype wrapper allowing injection of arbitrary content into CSS.

Usage:

toWidget $ CssBuilder "p { color: red }"

Since: 1.1.3

Constructors

CssBuilder 

Instances

ToWidgetHead site CssBuilder # 

Methods

toWidgetHead :: (MonadWidget m, (* ~ HandlerSite m) site) => CssBuilder -> m () #

ToWidgetMedia site CssBuilder # 

Methods

toWidgetMedia :: (MonadWidget m, (* ~ HandlerSite m) site) => Text -> CssBuilder -> m () #

ToWidget site CssBuilder # 

Methods

toWidget :: (MonadWidget m, (* ~ HandlerSite m) site) => CssBuilder -> m () #

(~) * render (RY site) => ToWidgetHead site (render -> CssBuilder) # 

Methods

toWidgetHead :: (MonadWidget m, (* ~ HandlerSite m) site) => (render -> CssBuilder) -> m () #

(~) * render (RY site) => ToWidgetMedia site (render -> CssBuilder) # 

Methods

toWidgetMedia :: (MonadWidget m, (* ~ HandlerSite m) site) => Text -> (render -> CssBuilder) -> m () #

(~) * render (RY site) => ToWidget site (render -> CssBuilder) # 

Methods

toWidget :: (MonadWidget m, (* ~ HandlerSite m) site) => (render -> CssBuilder) -> m () #

data PageContent url #

Content for a web page. By providing this datatype, we can easily create generic site templates, which would have the type signature:

PageContent url -> HtmlUrl url

Constructors

PageContent 

Fields

type RepHtml = Html #

Deprecated: Please use Html instead

newtype DontFullyEvaluate a #

Prevents a response body from being fully evaluated before sending the request.

Since 1.1.0

Constructors

DontFullyEvaluate 

Fields

data ErrorResponse #

Responses to indicate some form of an error occurred.

data Header #

Headers to be added to a Result.

Constructors

AddCookie !SetCookie 
DeleteCookie !ByteString !ByteString

name and path

Header !(CI ByteString) !ByteString

key and value

Instances

Eq Header # 

Methods

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

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

Show Header # 
NFData Header # 

Methods

rnf :: Header -> () #

data Location url #

Constructors

Local !url 
Remote !Text 

Instances

Eq url => Eq (Location url) # 

Methods

(==) :: Location url -> Location url -> Bool #

(/=) :: Location url -> Location url -> Bool #

Show url => Show (Location url) # 

Methods

showsPrec :: Int -> Location url -> ShowS #

show :: Location url -> String #

showList :: [Location url] -> ShowS #

newtype UniqueList x #

A diff list that does not directly enforce uniqueness. When creating a widget Yesod will use nub to make it unique.

Constructors

UniqueList ([x] -> [x]) 

data Script url #

Constructors

Script 

Fields

Instances

Eq url => Eq (Script url) # 

Methods

(==) :: Script url -> Script url -> Bool #

(/=) :: Script url -> Script url -> Bool #

Show url => Show (Script url) # 

Methods

showsPrec :: Int -> Script url -> ShowS #

show :: Script url -> String #

showList :: [Script url] -> ShowS #

data Stylesheet url #

Constructors

Stylesheet 

Fields

Instances

Eq url => Eq (Stylesheet url) # 

Methods

(==) :: Stylesheet url -> Stylesheet url -> Bool #

(/=) :: Stylesheet url -> Stylesheet url -> Bool #

Show url => Show (Stylesheet url) # 

Methods

showsPrec :: Int -> Stylesheet url -> ShowS #

show :: Stylesheet url -> String #

showList :: [Stylesheet url] -> ShowS #

newtype Title #

Constructors

Title 

Fields

newtype Head url #

Constructors

Head (HtmlUrl url) 

Instances

Semigroup (Head url) # 

Methods

(<>) :: Head url -> Head url -> Head url #

sconcat :: NonEmpty (Head url) -> Head url #

stimes :: Integral b => b -> Head url -> Head url #

Monoid (Head url) # 

Methods

mempty :: Head url #

mappend :: Head url -> Head url -> Head url #

mconcat :: [Head url] -> Head url #

newtype Body url #

Constructors

Body (HtmlUrl url) 

Instances

Semigroup (Body url) # 

Methods

(<>) :: Body url -> Body url -> Body url #

sconcat :: NonEmpty (Body url) -> Body url #

stimes :: Integral b => b -> Body url -> Body url #

Monoid (Body url) # 

Methods

mempty :: Body url #

mappend :: Body url -> Body url -> Body url #

mconcat :: [Body url] -> Body url #

type CssBuilderUrl a = (a -> [(Text, Text)] -> Text) -> Builder #

data GWData a #

Constructors

GWData 

Instances

Semigroup (GWData a) # 

Methods

(<>) :: GWData a -> GWData a -> GWData a #

sconcat :: NonEmpty (GWData a) -> GWData a #

stimes :: Integral b => b -> GWData a -> GWData a #

Monoid (GWData a) # 

Methods

mempty :: GWData a #

mappend :: GWData a -> GWData a -> GWData a #

mconcat :: [GWData a] -> GWData a #

data Logger #

Constructors

Logger 

newtype SubHandlerFor sub master a #

A handler monad for subsite

Since: 1.6.0

Constructors

SubHandlerFor 

Fields

Instances

Monad (SubHandlerFor child master) # 

Methods

(>>=) :: SubHandlerFor child master a -> (a -> SubHandlerFor child master b) -> SubHandlerFor child master b #

(>>) :: SubHandlerFor child master a -> SubHandlerFor child master b -> SubHandlerFor child master b #

return :: a -> SubHandlerFor child master a #

fail :: String -> SubHandlerFor child master a #

Functor (SubHandlerFor sub master) # 

Methods

fmap :: (a -> b) -> SubHandlerFor sub master a -> SubHandlerFor sub master b #

(<$) :: a -> SubHandlerFor sub master b -> SubHandlerFor sub master a #

Applicative (SubHandlerFor child master) # 

Methods

pure :: a -> SubHandlerFor child master a #

(<*>) :: SubHandlerFor child master (a -> b) -> SubHandlerFor child master a -> SubHandlerFor child master b #

liftA2 :: (a -> b -> c) -> SubHandlerFor child master a -> SubHandlerFor child master b -> SubHandlerFor child master c #

(*>) :: SubHandlerFor child master a -> SubHandlerFor child master b -> SubHandlerFor child master b #

(<*) :: SubHandlerFor child master a -> SubHandlerFor child master b -> SubHandlerFor child master a #

MonadIO (SubHandlerFor child master) # 

Methods

liftIO :: IO a -> SubHandlerFor child master a #

MonadUnliftIO (SubHandlerFor child master) #

Since: 1.4.38

Methods

askUnliftIO :: SubHandlerFor child master (UnliftIO (SubHandlerFor child master)) #

withRunInIO :: ((forall a. SubHandlerFor child master a -> IO a) -> IO b) -> SubHandlerFor child master b #

MonadResource (SubHandlerFor child master) # 

Methods

liftResourceT :: ResourceT IO a -> SubHandlerFor child master a #

MonadThrow (SubHandlerFor child master) # 

Methods

throwM :: Exception e => e -> SubHandlerFor child master a #

MonadLogger (SubHandlerFor child master) # 

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> SubHandlerFor child master () #

MonadLoggerIO (SubHandlerFor child master) # 

Methods

askLoggerIO :: SubHandlerFor child master (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) #

MonadHandler (SubHandlerFor sub master) # 

Associated Types

type HandlerSite (SubHandlerFor sub master :: * -> *) :: * #

type SubHandlerSite (SubHandlerFor sub master :: * -> *) :: * #

Methods

liftHandler :: HandlerFor (HandlerSite (SubHandlerFor sub master)) a -> SubHandlerFor sub master a #

liftSubHandler :: SubHandlerFor (SubHandlerSite (SubHandlerFor sub master)) (HandlerSite (SubHandlerFor sub master)) a -> SubHandlerFor sub master a #

MonadReader (HandlerData child master) (SubHandlerFor child master) # 

Methods

ask :: SubHandlerFor child master (HandlerData child master) #

local :: (HandlerData child master -> HandlerData child master) -> SubHandlerFor child master a -> SubHandlerFor child master a #

reader :: (HandlerData child master -> a) -> SubHandlerFor child master a #

type HandlerSite (SubHandlerFor sub master) # 
type HandlerSite (SubHandlerFor sub master) = master
type SubHandlerSite (SubHandlerFor sub master) # 
type SubHandlerSite (SubHandlerFor sub master) = sub