Safe Haskell | None |
---|---|
Language | Haskell98 |
Yesod.Core.Types
- type SessionMap = Map Text ByteString
- type SaveSession = SessionMap -> IO [Header]
- newtype SessionBackend = SessionBackend {
- sbLoadSession :: Request -> IO (SessionMap, SaveSession)
- data SessionCookie = SessionCookie (Either UTCTime ByteString) ByteString SessionMap
- data ClientSessionDateCache = ClientSessionDateCache {}
- data YesodRequest = YesodRequest {
- reqGetParams :: ![(Text, Text)]
- reqCookies :: ![(Text, Text)]
- reqWaiRequest :: !Request
- reqLangs :: ![Text]
- reqToken :: !(Maybe Text)
- reqSession :: !SessionMap
- reqAccept :: ![ContentType]
- data YesodResponse
- = YRWai !Response
- | YRWaiApp !Application
- | YRPlain !Status ![Header] !ContentType !Content !SessionMap
- type RequestBodyContents = ([(Text, Text)], [(Text, FileInfo)])
- data FileInfo = FileInfo {
- fileName :: !Text
- fileContentType :: !Text
- fileSourceRaw :: !(Source (ResourceT IO) ByteString)
- fileMove :: !(FilePath -> IO ())
- data FileUpload
- = FileUploadMemory !(BackEnd ByteString)
- | FileUploadDisk !(InternalState -> BackEnd FilePath)
- | FileUploadSource !(BackEnd (Source (ResourceT IO) ByteString))
- data Approot master
- = ApprootRelative
- | ApprootStatic !Text
- | ApprootMaster !(master -> Text)
- | ApprootRequest !(master -> Request -> Text)
- type ResolvedApproot = Text
- data AuthResult
- data ScriptLoadPosition master
- type BottomOfHeadAsync master = [Text] -> Maybe (HtmlUrl (Route master)) -> HtmlUrl (Route master)
- type Texts = [Text]
- newtype WaiSubsite = WaiSubsite {}
- data RunHandlerEnv site = RunHandlerEnv {
- rheRender :: !(Route site -> [(Text, Text)] -> Text)
- rheRoute :: !(Maybe (Route site))
- rheSite :: !site
- rheUpload :: !(RequestBodyLength -> FileUpload)
- rheLog :: !(Loc -> LogSource -> LogLevel -> LogStr -> IO ())
- rheOnError :: !(ErrorResponse -> YesodApp)
- rheMaxExpires :: !Text
- data HandlerData site parentRoute = HandlerData {
- handlerRequest :: !YesodRequest
- handlerEnv :: !(RunHandlerEnv site)
- handlerState :: !(IORef GHState)
- handlerToParent :: !(Route site -> parentRoute)
- handlerResource :: !InternalState
- data YesodRunnerEnv site = YesodRunnerEnv {
- yreLogger :: !Logger
- yreSite :: !site
- yreSessionBackend :: !(Maybe SessionBackend)
- yreGen :: !GenIO
- yreGetMaxExpires :: IO Text
- data YesodSubRunnerEnv sub parent parentMonad = YesodSubRunnerEnv {
- 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) -> Application
- newtype HandlerT site m a = HandlerT {
- unHandlerT :: HandlerData site (MonadRoute m) -> m a
- type family MonadRoute (m :: * -> *)
- data GHState = GHState {
- ghsSession :: SessionMap
- ghsRBC :: Maybe RequestBodyContents
- ghsIdent :: Int
- ghsCache :: TypeMap
- ghsCacheBy :: KeyedTypeMap
- ghsHeaders :: Endo [Header]
- type YesodApp = YesodRequest -> ResourceT IO YesodResponse
- newtype WidgetT site m a = WidgetT {
- unWidgetT :: HandlerData site (MonadRoute m) -> m (a, GWData (Route site))
- type RY master = Route master -> [(Text, Text)] -> Text
- newtype CssBuilder = CssBuilder {}
- data PageContent url = PageContent {}
- data Content
- = ContentBuilder !Builder !(Maybe Int)
- | ContentSource !(Source (ResourceT IO) (Flush Builder))
- | ContentFile !FilePath !(Maybe FilePart)
- | ContentDontEvaluate !Content
- data TypedContent = TypedContent !ContentType !Content
- type RepHtml = Html
- newtype RepJson = RepJson Content
- newtype RepPlain = RepPlain Content
- newtype RepXml = RepXml Content
- type ContentType = ByteString
- newtype DontFullyEvaluate a = DontFullyEvaluate {
- unDontFullyEvaluate :: a
- data ErrorResponse
- data Header
- data Location url
- newtype UniqueList x = UniqueList ([x] -> [x])
- data Script url = Script {
- scriptLocation :: Location url
- scriptAttributes :: [(Text, Text)]
- data Stylesheet url = Stylesheet {
- styleLocation :: Location url
- styleAttributes :: [(Text, Text)]
- newtype Title = Title {}
- newtype Head url = Head (HtmlUrl url)
- newtype Body url = Body (HtmlUrl url)
- type CssBuilderUrl a = (a -> [(Text, Text)] -> Text) -> Builder
- data GWData a = GWData {
- 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)
- data HandlerContents
- data Logger = Logger {}
- loggerPutStr :: Logger -> LogStr -> IO ()
Documentation
type SessionMap = Map Text ByteString #
type SaveSession #
Arguments
= SessionMap | The session contents after running the handler |
-> IO [Header] |
newtype SessionBackend #
Constructors
SessionBackend | |
Fields
|
data SessionCookie #
Constructors
SessionCookie (Either UTCTime ByteString) ByteString SessionMap |
Instances
data ClientSessionDateCache #
Constructors
ClientSessionDateCache | |
Fields
|
Instances
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
.
Constructors
YRWai !Response | |
YRWaiApp !Application | |
YRPlain !Status ![Header] !ContentType !Content !SessionMap |
type RequestBodyContents = ([(Text, Text)], [(Text, FileInfo)]) #
A tuple containing both the POST parameters and submitted files.
Constructors
FileInfo | |
Fields
|
data FileUpload #
Constructors
FileUploadMemory !(BackEnd ByteString) | |
FileUploadDisk !(InternalState -> BackEnd FilePath) | |
FileUploadSource !(BackEnd (Source (ResourceT IO) ByteString)) |
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 ResolvedApproot = Text #
data ScriptLoadPosition master #
Constructors
BottomOfBody | |
BottomOfHeadBlocking | |
BottomOfHeadAsync (BottomOfHeadAsync master) |
type BottomOfHeadAsync master #
newtype WaiSubsite #
Wrap up a normal WAI application as a Yesod subsite.
Constructors
WaiSubsite | |
Fields |
Instances
ParseRoute WaiSubsite # | |
RenderRoute WaiSubsite # | |
YesodSubDispatch WaiSubsite master # | |
Eq (Route WaiSubsite) # | |
Ord (Route WaiSubsite) # | |
Read (Route WaiSubsite) # | |
Show (Route WaiSubsite) # | |
data Route WaiSubsite # | |
data RunHandlerEnv site #
Constructors
RunHandlerEnv | |
Fields
|
data HandlerData site parentRoute #
Constructors
HandlerData | |
Fields
|
data YesodRunnerEnv site #
Constructors
YesodRunnerEnv | |
Fields
|
data YesodSubRunnerEnv sub parent parentMonad #
Constructors
YesodSubRunnerEnv | |
Fields
|
type ParentRunner parent m = m TypedContent -> YesodRunnerEnv parent -> Maybe (Route parent) -> Application #
A generic handler monad, which can have a different subsite and master site. We define a newtype for better error message.
Constructors
HandlerT | |
Fields
|
Instances
MonadBaseControl b m => MonadBaseControl b (HandlerT site m) # | Note: although we provide a 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) # | |
MonadIO m => MonadIO (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 => MonadLoggerIO (HandlerT site m) # | |
(MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (HandlerT site m) # | |
MonadResourceBase m => MonadHandler (HandlerT site m) # | |
type MonadRoute (HandlerT site m) # | |
type HandlerSite (HandlerT site m) # | |
type StM (HandlerT site m) a # | |
type family MonadRoute (m :: * -> *) #
Instances
type MonadRoute IO # | |
type MonadRoute (HandlerT site m) # | |
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.
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
|
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) # | |
MonadIO m => MonadIO (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 => MonadLoggerIO (WidgetT site m) # | |
(MonadIO m, MonadBase IO m, MonadThrow m) => MonadResource (WidgetT site m) # | |
MonadResourceBase m => MonadWidget (WidgetT site m) # | |
MonadResourceBase m => MonadHandler (WidgetT site m) # | |
(Monad m, (~) * a ()) => IsString (WidgetT site m a) # | A For example, in a yesod-scaffold site you could use: getHomeR = do defaultLayout "Widget text" |
((~) * a (), Monad m) => Semigroup (WidgetT site m a) # | |
((~) * a (), Monad m) => Monoid (WidgetT site m a) # | |
type HandlerSite (WidgetT site m) # | |
type StM (WidgetT site m) a # | |
newtype CssBuilder #
Newtype wrapper allowing injection of arbitrary content into CSS.
Usage:
toWidget $ CssBuilder "p { color: red }"
Since: 1.1.3
Constructors
CssBuilder | |
Fields |
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 #
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
ContentBuilder !Builder !(Maybe Int) | The content and optional content length. |
ContentSource !(Source (ResourceT IO) (Flush Builder)) | |
ContentFile !FilePath !(Maybe FilePart) | |
ContentDontEvaluate !Content |
Instances
Instances
Instances
Instances
type ContentType = ByteString #
newtype DontFullyEvaluate a #
Prevents a response body from being fully evaluated before sending the request.
Since 1.1.0
Constructors
DontFullyEvaluate | |
Fields
|
Instances
ToTypedContent a => ToTypedContent (DontFullyEvaluate a) # | |
HasContentType a => HasContentType (DontFullyEvaluate a) # | |
ToContent a => ToContent (DontFullyEvaluate a) # | |
data ErrorResponse #
Responses to indicate some form of an error occurred.
Constructors
NotFound | |
InternalError Text | |
InvalidArgs [Text] | |
NotAuthenticated | |
PermissionDenied Text | |
BadMethod Method |
Instances
Headers to be added to a Result
.
Constructors
AddCookie SetCookie | |
DeleteCookie ByteString ByteString | |
Header ByteString ByteString |
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]) |
Instances
Semigroup (UniqueList x) # | |
Monoid (UniqueList x) # | |
Constructors
Script | |
Fields
|
data Stylesheet url #
Constructors
Stylesheet | |
Fields
|
Instances
Eq url => Eq (Stylesheet url) # | |
Show url => Show (Stylesheet url) # | |
Constructors
GWData | |
Fields
|
data HandlerContents #
Constructors
HCContent Status !TypedContent | |
HCError ErrorResponse | |
HCSendFile ContentType FilePath (Maybe FilePart) | |
HCRedirect Status Text | |
HCCreated Text | |
HCWai Response | |
HCWaiApp Application |
Instances
Constructors
Logger | |
Fields
|
loggerPutStr :: Logger -> LogStr -> IO () #