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

Safe HaskellNone

Yesod.Core.Types

Synopsis

Documentation

type SessionMap = Map Text ByteStringSource

type SaveSessionSource

Arguments

 = SessionMap

The session contents after running the handler

-> IO [Header] 

newtype SessionBackend Source

Constructors

SessionBackend 

Fields

sbLoadSession :: Request -> IO (SessionMap, SaveSession)

Return the session data and a function to save the session

data SessionCookie Source

Constructors

SessionCookie (Either UTCTime ByteString) ByteString SessionMap 

data ClientSessionDateCache Source

Constructors

ClientSessionDateCache 

Fields

csdcNow :: !UTCTime
 
csdcExpires :: !UTCTime
 
csdcExpiresSerialized :: !ByteString
 

data YesodRequest Source

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

Constructors

YesodRequest 

Fields

reqGetParams :: ![(Text, Text)]

Same as queryString, but decoded to Text.

reqCookies :: ![(Text, Text)]
 
reqWaiRequest :: !Request
 
reqLangs :: ![Text]

Languages which the client supports. This is an ordered list by preference.

reqToken :: !(Maybe Text)

A random, session-specific token used to prevent CSRF attacks.

reqSession :: !SessionMap

Initial session sent from the client.

Since 1.2.0

reqAccept :: ![ContentType]

An ordered list of the accepted content types.

Since 1.2.0

data YesodResponse Source

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)])Source

A tuple containing both the POST parameters and submitted files.

data FileInfo Source

Constructors

FileInfo 

Fields

fileName :: !Text
 
fileContentType :: !Text
 
fileSourceRaw :: !(Source (ResourceT IO) ByteString)
 
fileMove :: !(FilePath -> IO ())
 

data Approot master Source

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 masterSource

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]Source

newtype WaiSubsite Source

Wrap up a normal WAI application as a Yesod subsite.

Constructors

WaiSubsite 

data RunHandlerEnv site Source

Constructors

RunHandlerEnv 

Fields

rheRender :: !(Route site -> [(Text, Text)] -> Text)
 
rheRoute :: !(Maybe (Route site))
 
rheSite :: !site
 
rheUpload :: !(RequestBodyLength -> FileUpload)
 
rheLog :: !(Loc -> LogSource -> LogLevel -> LogStr -> IO ())
 
rheOnError :: !(ErrorResponse -> YesodApp)

How to respond when an error is thrown internally.

Since 1.2.0

data HandlerData site parentRoute Source

data YesodRunnerEnv site Source

Constructors

YesodRunnerEnv 

Fields

yreLogger :: !Logger
 
yreSite :: !site
 
yreSessionBackend :: !(Maybe SessionBackend)
 
yreGen :: !GenIO
 

data YesodSubRunnerEnv sub parent parentMonad Source

Constructors

YesodSubRunnerEnv 

Fields

ysreParentRunner :: !(ParentRunner parent parentMonad)
 
ysreGetSub :: !(parent -> sub)
 
ysreToParentRoute :: !(Route sub -> Route parent)
 
ysreParentEnv :: !(YesodRunnerEnv parent)
 

type ParentRunner parent m = m TypedContent -> YesodRunnerEnv parent -> Maybe (Route parent) -> ApplicationSource

newtype HandlerT site m a Source

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

Constructors

HandlerT 

Fields

unHandlerT :: HandlerData site (MonadRoute m) -> m a
 

Instances

MonadBaseControl b m => MonadBaseControl b (HandlerT site m)

Note: although we provide a MonadBaseControl instance, lifted-base's fork function is incompatible with the underlying ResourceT system. Instead, if you must fork a separate thread, you should use resourceForkIO.

Using fork usually leads to an exception that says "Control.Monad.Trans.Resource.register': The mutable state is being accessed after cleanup. Please contact the maintainers."

MonadBase b m => MonadBase b (HandlerT site m) 
Monad m => MonadReader site (HandlerT site m) 
MonadTrans (HandlerT site) 
Monad m => Monad (HandlerT site m) 
Monad m => Functor (HandlerT site m) 
Monad m => Applicative (HandlerT site m) 
MonadActive m => MonadActive (HandlerT site m) 
MonadThrow m => MonadThrow (HandlerT site m) 
MonadCatch m => MonadCatch (HandlerT site m) 
MonadMask m => MonadMask (HandlerT site m) 
MonadIO m => MonadLogger (HandlerT site m) 
MonadIO m => MonadIO (HandlerT site m) 
(MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (HandlerT site m) 
MonadResourceBase m => MonadHandler (HandlerT site m) 

type family MonadRoute m Source

data GHState Source

Constructors

GHState 

Fields

ghsSession :: SessionMap
 
ghsRBC :: Maybe RequestBodyContents
 
ghsIdent :: Int
 
ghsCache :: TypeMap
 
ghsCacheBy :: KeyedTypeMap
 
ghsHeaders :: Endo [Header]
 

type YesodApp = YesodRequest -> ResourceT IO YesodResponseSource

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 WidgetT site m a Source

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

WidgetT 

Fields

unWidgetT :: HandlerData site (MonadRoute m) -> m (a, GWData (Route site))
 

Instances

MonadBaseControl b m => MonadBaseControl b (WidgetT site m) 
MonadBase b m => MonadBase b (WidgetT site m) 
Monad m => MonadReader site (WidgetT site m) 
(~ * site' site, ~ (* -> *) IO m, ~ * a ()) => ToWidget site' (WidgetT site m a) 
MonadTrans (WidgetT site) 
Monad m => Monad (WidgetT site m) 
Monad m => Functor (WidgetT site m) 
Monad m => Applicative (WidgetT site m) 
MonadActive m => MonadActive (WidgetT site m) 
MonadThrow m => MonadThrow (WidgetT site m) 
MonadCatch m => MonadCatch (WidgetT site m) 
MonadMask m => MonadMask (WidgetT site m) 
MonadIO m => MonadLogger (WidgetT site m) 
MonadIO m => MonadIO (WidgetT site m) 
(Applicative m, MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (WidgetT site m) 
MonadResourceBase m => MonadWidget (WidgetT site m) 
MonadResourceBase m => MonadHandler (WidgetT site m) 
(~ * a (), Monad m) => Monoid (WidgetT site m a) 

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

newtype CssBuilder Source

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 
ToWidgetMedia site CssBuilder 
ToWidget site CssBuilder 
~ * render (RY site) => ToWidgetHead site (render -> CssBuilder) 
~ * render (RY site) => ToWidgetMedia site (render -> CssBuilder) 
~ * render (RY site) => ToWidget site (render -> CssBuilder) 

data PageContent url Source

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

pageTitle :: Html
 
pageHead :: HtmlUrl url
 
pageBody :: HtmlUrl url
 

data Content Source

Constructors

ContentBuilder !Builder !(Maybe Int)

The content and optional content length.

ContentSource !(Source (ResourceT IO) (Flush Builder)) 
ContentFile !FilePath !(Maybe FilePart) 
ContentDontEvaluate !Content 

type RepHtml = HtmlSource

Deprecated: Please use Html instead

type ContentType = ByteStringSource

newtype DontFullyEvaluate a Source

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

Since 1.1.0

Constructors

DontFullyEvaluate 

Fields

unDontFullyEvaluate :: a
 

data ErrorResponse Source

Responses to indicate some form of an error occurred. These are different from SpecialResponse in that they allow for custom error pages.

Instances

data Header Source

Headers to be added to a Result.

Constructors

AddCookie SetCookie 
DeleteCookie ByteString ByteString 
Header ByteString ByteString 

Instances

Eq Header 
Show Header 
NFData Header 

data Location url Source

Constructors

Local url 
Remote Text 

Instances

Eq url => Eq (Location url) 
Show url => Show (Location url) 

newtype UniqueList x Source

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]) 

Instances

data Script url Source

Constructors

Script 

Instances

Eq url => Eq (Script url) 
Show url => Show (Script url) 

data Stylesheet url Source

Constructors

Stylesheet 

Instances

Eq url => Eq (Stylesheet url) 
Show url => Show (Stylesheet url) 

newtype Title Source

Constructors

Title 

Fields

unTitle :: Html
 

newtype Head url Source

Constructors

Head (HtmlUrl url) 

Instances

Monoid (Head url) 

newtype Body url Source

Constructors

Body (HtmlUrl url) 

Instances

Monoid (Body url) 

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

data GWData a Source

Constructors

GWData 

Fields

gwdBody :: !(Body a)
 
gwdTitle :: !(Last Title)
 
gwdScripts :: !(UniqueList (Script a))
 
gwdStylesheets :: !(UniqueList (Stylesheet a))
 
gwdCss :: !(Map (Maybe Text) (CssBuilderUrl a))
 
gwdJavascript :: !(Maybe (JavascriptUrl a))
 
gwdHead :: !(Head a)
 

Instances