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

Safe Haskell | None
Language | Haskell2010

Yesod.Core

Contents

- Type classes
  - Breadcrumbs
- Types
- Utilities
- Defaults
- Data types
- Logging
- Sessions
- CSRF protection
- JS loaders
- Generalizing type classes
- Approot
- Misc
- LiteApp
- Low-level
- Re-exports
- Commonly referenced functions/datatypes
- Utilities
- Shakespeare
  - Hamlet
  - Julius
  - Cassius/Lucius

Synopsis

- class RenderRoute site => Yesod site where
  - approot :: Approot site
  - catchHandlerExceptions :: MonadUnliftIO m => site -> m a -> (SomeException -> m a) -> m a
  - errorHandler :: ErrorResponse -> HandlerFor site TypedContent
  - defaultLayout :: WidgetFor site () -> HandlerFor site Html
  - urlParamRenderOverride :: site -> Route site -> [(Text, Text)] -> Maybe Builder
  - isAuthorized :: Route site -> Bool -> HandlerFor site AuthResult
  - isWriteRequest :: Route site -> HandlerFor site Bool
  - authRoute :: site -> Maybe (Route site)
  - cleanPath :: site -> [Text] -> Either [Text] [Text]
  - joinPath :: site -> Text -> [Text] -> [(Text, Text)] -> Builder
  - addStaticContent :: Text -> Text -> ByteString -> HandlerFor site (Maybe (Either Text (Route site, [(Text, Text)])))
  - maximumContentLength :: site -> Maybe (Route site) -> Maybe Word64
  - maximumContentLengthIO :: site -> Maybe (Route site) -> IO (Maybe Word64)
  - makeLogger :: site -> IO Logger
  - messageLoggerSource :: site -> Logger -> Loc -> LogSource -> LogLevel -> LogStr -> IO ()
  - jsLoader :: site -> ScriptLoadPosition site
  - jsAttributes :: site -> [(Text, Text)]
  - jsAttributesHandler :: HandlerFor site [(Text, Text)]
  - makeSessionBackend :: site -> IO (Maybe SessionBackend)
  - fileUpload :: site -> RequestBodyLength -> FileUpload
  - shouldLogIO :: site -> LogSource -> LogLevel -> IO Bool
  - yesodMiddleware :: ToTypedContent res => HandlerFor site res -> HandlerFor site res
  - yesodWithInternalState :: site -> Maybe (Route site) -> (InternalState -> IO a) -> IO a
  - defaultMessageWidget :: Html -> HtmlUrl (Route site) -> WidgetFor site ()
- class Yesod site => YesodDispatch site where
  - yesodDispatch :: YesodRunnerEnv site -> Application
- class YesodSubDispatch sub master where
  - yesodSubDispatch :: YesodSubRunnerEnv sub master -> Application
- class Eq (Route a) => RenderRoute a where
  - data Route a
  - renderRoute :: Route a -> ([Text], [(Text, Text)])
- class RenderRoute a => ParseRoute a where
  - parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route a)
- class RenderRoute a => RouteAttrs a where
  - routeAttrs :: Route a -> Set Text
- class YesodBreadcrumbs site where
  - breadcrumb :: Route site -> HandlerFor site (Text, Maybe (Route site))
- breadcrumbs :: (YesodBreadcrumbs site, Show (Route site), Eq (Route site)) => HandlerFor site (Text, [(Route site, Text)])
- data Approot master
  - = ApprootRelative
  - | ApprootStatic !Text
  - | ApprootMaster !(master -> Text)
  - | ApprootRequest !(master -> Request -> Text)
- data FileUpload
  - = FileUploadMemory !(BackEnd ByteString)
  - | FileUploadDisk !(InternalState -> BackEnd FilePath)
  - | FileUploadSource !(BackEnd (ConduitT () ByteString (ResourceT IO) ()))
- data ErrorResponse
  - = NotFound
  - | InternalError !Text
  - | InvalidArgs ![Text]
  - | NotAuthenticated
  - | PermissionDenied !Text
  - | BadMethod !Method
- maybeAuthorized :: Yesod site => Route site -> Bool -> HandlerT site IO (Maybe (Route site))
- widgetToPageContent :: Yesod site => WidgetFor site () -> HandlerFor site (PageContent (Route site))
- defaultErrorHandler :: Yesod site => ErrorResponse -> HandlerFor site TypedContent
- defaultYesodMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res
- authorizationCheck :: Yesod site => HandlerFor site ()
- data AuthResult
  - = Authorized
  - | AuthenticationRequired
  - | Unauthorized !Text
- unauthorizedI :: (MonadHandler m, RenderMessage (HandlerSite m) msg) => msg -> m AuthResult
- defaultMakeLogger :: IO Logger
- defaultMessageLoggerSource :: (LogSource -> LogLevel -> IO Bool) -> Logger -> Loc -> LogSource -> LogLevel -> LogStr -> IO ()
- defaultShouldLogIO :: LogSource -> LogLevel -> IO Bool
- formatLogMessage :: IO ZonedDate -> Loc -> LogSource -> LogLevel -> LogStr -> IO LogStr
- data LogLevel
  - = LevelDebug
  - | LevelInfo
  - | LevelWarn
  - | LevelError
  - | LevelOther Text
- logDebug :: Q Exp
- logInfo :: Q Exp
- logWarn :: Q Exp
- logError :: Q Exp
- logOther :: Text -> Q Exp
- logDebugS :: Q Exp
- logInfoS :: Q Exp
- logWarnS :: Q Exp
- logErrorS :: Q Exp
- logOtherS :: Q Exp
- newtype SessionBackend = SessionBackend {
  - sbLoadSession :: Request -> IO (SessionMap, SaveSession)
  }
- customizeSessionCookies :: (SetCookie -> SetCookie) -> SessionBackend -> SessionBackend
- defaultClientSessionBackend :: Int -> FilePath -> IO SessionBackend
- envClientSessionBackend :: Int -> String -> IO SessionBackend
- clientSessionBackend :: Key -> IO ClientSessionDateCache -> SessionBackend
- sslOnlySessions :: IO (Maybe SessionBackend) -> IO (Maybe SessionBackend)
- laxSameSiteSessions :: IO (Maybe SessionBackend) -> IO (Maybe SessionBackend)
- strictSameSiteSessions :: IO (Maybe SessionBackend) -> IO (Maybe SessionBackend)
- sslOnlyMiddleware :: Int -> HandlerFor site res -> HandlerFor site res
- clientSessionDateCacher :: NominalDiffTime -> IO (IO ClientSessionDateCache, IO ())
- loadClientSession :: Key -> IO ClientSessionDateCache -> ByteString -> Request -> IO (SessionMap, SaveSession)
- data Header
  - = AddCookie !SetCookie
  - | DeleteCookie !ByteString !ByteString
  - | Header !(CI ByteString) !ByteString
- defaultCsrfMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res
- defaultCsrfSetCookieMiddleware :: HandlerFor site res -> HandlerFor site res
- csrfSetCookieMiddleware :: HandlerFor site res -> SetCookie -> HandlerFor site res
- defaultCsrfCheckMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res
- csrfCheckMiddleware :: HandlerFor site res -> HandlerFor site Bool -> CI ByteString -> Text -> HandlerFor site res
- data ScriptLoadPosition master
  - = BottomOfBody
  - | BottomOfHeadBlocking
  - | BottomOfHeadAsync !(BottomOfHeadAsync master)
- type BottomOfHeadAsync master = [Text] -> Maybe (HtmlUrl (Route master)) -> HtmlUrl (Route master)
- class (MonadResource m, MonadLogger m) => MonadHandler (m :: Type -> Type) where
  - type HandlerSite (m :: Type -> Type)
  - type SubHandlerSite (m :: Type -> Type)
  - liftHandler :: HandlerFor (HandlerSite m) a -> m a
  - liftSubHandler :: SubHandlerFor (SubHandlerSite m) (HandlerSite m) a -> m a
- class MonadHandler m => MonadWidget (m :: Type -> Type) where
  - liftWidget :: WidgetFor (HandlerSite m) a -> m a
- guessApproot :: Approot site
- guessApprootOr :: Approot site -> Approot site
- getApprootText :: Approot site -> site -> Request -> Text
- yesodVersion :: String
- yesodRender :: Yesod y => y -> ResolvedApproot -> Route y -> [(Text, Text)] -> Text
- runFakeHandler :: (Yesod site, MonadIO m) => SessionMap -> (site -> Logger) -> site -> HandlerT site IO a -> m (Either ErrorResponse a)
- newtype LiteApp = LiteApp {
  - unLiteApp :: Method -> [Text] -> Maybe (LiteHandler TypedContent)
  }
- data family Route a
- data family Route a
- type LiteHandler = HandlerFor LiteApp
- type LiteWidget = WidgetFor LiteApp
- liteApp :: Writer LiteApp () -> LiteApp
- dispatchTo :: ToTypedContent a => LiteHandler a -> Writer LiteApp ()
- onMethod :: Method -> Writer LiteApp () -> Writer LiteApp ()
- onStatic :: Text -> Writer LiteApp () -> Writer LiteApp ()
- withDynamic :: PathPiece p => (p -> Writer LiteApp ()) -> Writer LiteApp ()
- withDynamicMulti :: PathMultiPiece ps => (ps -> Writer LiteApp ()) -> Writer LiteApp ()
- yesodRunner :: (ToTypedContent res, Yesod site) => HandlerFor site res -> YesodRunnerEnv site -> Maybe (Route site) -> Application
- module Yesod.Core.Content
- module Yesod.Core.Dispatch
- module Yesod.Core.Handler
- module Yesod.Core.Widget
- module Yesod.Core.Json
- module Text.Shakespeare.I18N
- formatW3 :: UTCTime -> Text
- formatRFC1123 :: UTCTime -> Text
- formatRFC822 :: UTCTime -> Text
- type Html = Markup
- toHtml :: ToMarkup a => a -> Html
- preEscapedToMarkup :: ToMarkup a => a -> Markup
- class (forall (m :: Type -> Type). Monad m => Monad (t m)) => MonadTrans (t :: (Type -> Type) -> Type -> Type) where
  - lift :: Monad m => m a -> t m a
- class Monad m => MonadIO (m :: Type -> Type) where
  - liftIO :: IO a -> m a
- class MonadIO m => MonadUnliftIO (m :: Type -> Type) where
  - withRunInIO :: ((forall a. m a -> IO a) -> IO b) -> m b
- class MonadIO m => MonadResource (m :: Type -> Type) where
  - liftResourceT :: ResourceT IO a -> m a
- class Monad m => MonadLogger (m :: Type -> Type)
- type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
- showIntegral :: Integral a => a -> String
- readIntegral :: Num a => String -> Maybe a
- hamlet :: QuasiQuoter
- shamlet :: QuasiQuoter
- xhamlet :: QuasiQuoter
- type HtmlUrl url = Render url -> Html
- julius :: QuasiQuoter
- type JavascriptUrl url = (url -> [(Text, Text)] -> Text) -> Javascript
- renderJavascriptUrl :: (url -> [(Text, Text)] -> Text) -> JavascriptUrl url -> Text
- cassius :: QuasiQuoter
- lucius :: QuasiQuoter
- type CssUrl url = (url -> [(Text, Text)] -> Text) -> Css
- renderCssUrl :: (url -> [(Text, Text)] -> Text) -> CssUrl url -> Text

# Type classes

class RenderRoute site => Yesod site where Source #

Define settings for a Yesod applications. All methods have intelligent defaults, and therefore no implementation is required.

Minimal complete definition

Nothing

Methods

approot :: Approot site Source #

An absolute URL to the root of the application. Do not include trailing slash.

Default value: `guessApproot`. If you know your application root statically, it will be more efficient and more reliable to instead use `ApprootStatic` or `ApprootMaster`. If you do not need full absolute URLs, you can use `ApprootRelative` instead.

Note: Prior to yesod-core 1.5, the default value was `ApprootRelative`.

catchHandlerExceptions :: MonadUnliftIO m => site -> m a -> (SomeException -> m a) -> m a Source #

allows the user to specify how exceptions are cought. by default all async exceptions are thrown and synchronous exceptions render a 500 page. To catch all exceptions (even async) to render a 500 page, set this to `catchSyncOrAsync`. Beware this may have negative effects with functions like `timeout`.

Since: 1.6.24.0

errorHandler :: ErrorResponse -> HandlerFor site TypedContent Source #

Output error response pages.

Default value: `defaultErrorHandler`.

defaultLayout :: WidgetFor site () -> HandlerFor site Html Source #

Applies some form of layout to the contents of a page.

urlParamRenderOverride Source #

Arguments

:: site |
-> Route site |
-> [(Text, Text)] | query string
-> Maybe Builder |

Override the rendering function for a particular URL and query string parameters. One use case for this is to offload static hosting to a different domain name to avoid sending cookies.

For backward compatibility default implementation is in terms of `urlRenderOverride`, probably ineffective

Since 1.4.23

isAuthorized Source #

Arguments

:: Route site |
-> Bool | is this a write request?
-> HandlerFor site AuthResult |

Determine if a request is authorized or not.

Return `Authorized` if the request is authorized, `Unauthorized` a message if unauthorized. If authentication is required, return `AuthenticationRequired`.

isWriteRequest :: Route site -> HandlerFor site Bool Source #

Determines whether the current request is a write request. By default, this assumes you are following RESTful principles, and determines this from request method. In particular, all except the following request methods are considered write: GET HEAD OPTIONS TRACE.

This function is used to determine if a request is authorized; see `isAuthorized`.

authRoute :: site -> Maybe (Route site) Source #

The default route for authentication.

Used in particular by `isAuthorized`, but library users can do whatever they want with it.

cleanPath :: site -> [Text] -> Either [Text] [Text] Source #

A function used to clean up path segments. It returns `Right` with a clean path or `Left` with a new set of pieces the user should be redirected to. The default implementation enforces:

- No double slashes
- There is no trailing slash.

Note that versions of Yesod prior to 0.7 used a different set of rules involing trailing slashes.

joinPath Source #

Arguments

:: site |
-> Text | application root
-> [Text] | path pieces
-> [(Text, Text)] | query string
-> Builder |

Builds an absolute URL by concatenating the application root with the pieces of a path and a query string, if any. Note that the pieces of the path have been previously cleaned up by `cleanPath`.

addStaticContent Source #

Arguments

:: Text | filename extension
-> Text | mime-type
-> ByteString | content
-> HandlerFor site (Maybe (Either Text (Route site, [(Text, Text)]))) |

This function is used to store some static content to be served as an external file. The most common case of this is stashing CSS and JavaScript content in an external file; the Yesod.Widget module uses this feature.

The return value is `Nothing` if no storing was performed; this is the default implementation. A `Just` `Left` gives the absolute URL of the file, whereas a `Just` `Right` gives the type-safe URL. The former is necessary when you are serving the content outside the context of a Yesod application, such as via memcached.

maximumContentLength :: site -> Maybe (Route site) -> Maybe Word64 Source #

Maximum allowed length of the request body, in bytes. This method may be ignored if `maximumContentLengthIO` is overridden.

If `Nothing`, no maximum is applied.

Default: 2 megabytes.

maximumContentLengthIO :: site -> Maybe (Route site) -> IO (Maybe Word64) Source #

Maximum allowed length of the request body, in bytes. This is similar to `maximumContentLength`, but the result lives in `IO`. This allows you to dynamically change the maximum file size based on some external source like a database or an `IORef`.

The default implementation uses `maximumContentLength`. Future version of yesod will remove `maximumContentLength` and use this method exclusively.

Since: 1.6.13

makeLogger :: site -> IO Logger Source #

Creates a `Logger` to use for log messages.

Note that a common technique (endorsed by the scaffolding) is to create a `Logger` value and place it in your foundation datatype, and have this method return that already created value. That way, you can use that same `Logger` for printing messages during app initialization.

Default: the `defaultMakeLogger` function.

messageLoggerSource Source #

Arguments

:: site |
-> Logger |
-> Loc | position in source code
-> LogSource |
-> LogLevel |
-> LogStr | message
-> IO () |

Send a message to the `Logger` provided by `getLogger`.

Default: the `defaultMessageLoggerSource` function, using `shouldLogIO` to check whether we should log.

jsLoader :: site -> ScriptLoadPosition site Source #

Where to Load sripts from. We recommend the default value, `BottomOfBody`.

jsAttributes :: site -> [(Text, Text)] Source #

Default attributes to put on the JavaScript script tag generated for julius files

jsAttributesHandler :: HandlerFor site [(Text, Text)] Source #

Same as `jsAttributes` but allows you to run arbitrary Handler code

This is useful if you need to add a randomised nonce value to the script tag generated by `widgetFile`. If this function is overridden then `jsAttributes` is ignored.

Since: 1.6.16

makeSessionBackend :: site -> IO (Maybe SessionBackend) Source #

Create a session backend. Returning `Nothing` disables sessions. If you'd like to change the way that the session cookies are created, take a look at `customizeSessionCookies`.

Default: Uses clientsession with a 2 hour timeout.

fileUpload :: site -> RequestBodyLength -> FileUpload Source #

How to store uploaded files.

Default: When the request body is greater than 50kb, store in a temp file. For chunked request bodies, store in a temp file. Otherwise, store in memory.

shouldLogIO :: site -> LogSource -> LogLevel -> IO Bool Source #

Should we log the given log source/level combination.

Default: the `defaultShouldLogIO` function.

Since 1.2.4

yesodMiddleware :: ToTypedContent res => HandlerFor site res -> HandlerFor site res Source #

A Yesod middleware, which will wrap every handler function. This allows you to run code before and after a normal handler.

Default: the `defaultYesodMiddleware` function.

Since: 1.1.6

yesodWithInternalState :: site -> Maybe (Route site) -> (InternalState -> IO a) -> IO a Source #

How to allocate an `InternalState` for each request.

The default implementation is almost always what you want. However, if you know that you are never taking advantage of the `MonadResource` instance in your handler functions, setting this to a dummy implementation can provide a small optimization. Only do this if you really know what you're doing, otherwise you can turn safe code into a runtime error!

Since 1.4.2

defaultMessageWidget :: Html -> HtmlUrl (Route site) -> WidgetFor site () Source #

Convert a title and HTML snippet into a `Widget`. Used primarily for wrapping up error messages for better display.

Since: 1.4.30

#### Instances

Instances details

Yesod LiteApp Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Methods

approot :: Approot LiteApp Source #

catchHandlerExceptions :: MonadUnliftIO m => LiteApp -> m a -> (SomeException -> m a) -> m a Source #

errorHandler :: ErrorResponse -> HandlerFor LiteApp TypedContent Source #

defaultLayout :: WidgetFor LiteApp () -> HandlerFor LiteApp Html Source #

urlParamRenderOverride :: LiteApp -> Route LiteApp -> [(Text, Text)] -> Maybe Builder Source #

isAuthorized :: Route LiteApp -> Bool -> HandlerFor LiteApp AuthResult Source #

isWriteRequest :: Route LiteApp -> HandlerFor LiteApp Bool Source #

authRoute :: LiteApp -> Maybe (Route LiteApp) Source #

cleanPath :: LiteApp -> [Text] -> Either [Text] [Text] Source #

joinPath :: LiteApp -> Text -> [Text] -> [(Text, Text)] -> Builder Source #

addStaticContent :: Text -> Text -> ByteString -> HandlerFor LiteApp (Maybe (Either Text (Route LiteApp, [(Text, Text)]))) Source #

maximumContentLength :: LiteApp -> Maybe (Route LiteApp) -> Maybe Word64 Source #

maximumContentLengthIO :: LiteApp -> Maybe (Route LiteApp) -> IO (Maybe Word64) Source #

makeLogger :: LiteApp -> IO Logger Source #

messageLoggerSource :: LiteApp -> Logger -> Loc -> LogSource -> LogLevel -> LogStr -> IO () Source #

jsLoader :: LiteApp -> ScriptLoadPosition LiteApp Source #

jsAttributes :: LiteApp -> [(Text, Text)] Source #

jsAttributesHandler :: HandlerFor LiteApp [(Text, Text)] Source #

makeSessionBackend :: LiteApp -> IO (Maybe SessionBackend) Source #

fileUpload :: LiteApp -> RequestBodyLength -> FileUpload Source #

shouldLogIO :: LiteApp -> LogSource -> LogLevel -> IO Bool Source #

yesodMiddleware :: ToTypedContent res => HandlerFor LiteApp res -> HandlerFor LiteApp res Source #

yesodWithInternalState :: LiteApp -> Maybe (Route LiteApp) -> (InternalState -> IO a) -> IO a Source #

defaultMessageWidget :: Html -> HtmlUrl (Route LiteApp) -> WidgetFor LiteApp () Source #

class Yesod site => YesodDispatch site where Source #

This class is automatically instantiated when you use the template haskell mkYesod function. You should never need to deal with it directly.

Methods

yesodDispatch :: YesodRunnerEnv site -> Application Source #

#### Instances

Instances details

YesodDispatch LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods yesodDispatch :: YesodRunnerEnv LiteApp -> Application Source #

class YesodSubDispatch sub master where Source #

Methods

yesodSubDispatch :: YesodSubRunnerEnv sub master -> Application Source #

#### Instances

Instances details

YesodSubDispatch WaiSubsite master Source # |
Instance details Defined in Yesod.Core.Class.Dispatch Methods yesodSubDispatch :: YesodSubRunnerEnv WaiSubsite master -> Application Source #
YesodSubDispatch WaiSubsiteWithAuth master Source # |
Instance details Defined in Yesod.Core.Class.Dispatch Methods yesodSubDispatch :: YesodSubRunnerEnv WaiSubsiteWithAuth master -> Application Source #

class Eq (Route a) => RenderRoute a where Source #

Associated Types

data Route a Source #

The type-safe URLs associated with a site argument.

Methods

renderRoute Source #

Arguments

:: Route a |
-> ([Text], [(Text, Text)]) | The path of the URL split on forward slashes, and a list of query parameters with their associated value.

#### Instances

Instances details

RenderRoute LiteApp Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Associated Types

data Route LiteApp |
Instance details Defined in Yesod.Core.Internal.LiteApp data Route LiteApp = LiteAppRoute [Text]

Methods

renderRoute :: Route LiteApp -> ([Text], [(Text, Text)]) Source #

RenderRoute WaiSubsite Source # |

Instance details

Defined in Yesod.Core.Types

Associated Types

data Route WaiSubsite |
Instance details Defined in Yesod.Core.Types data Route WaiSubsite = WaiSubsiteRoute [Text] [(Text, Text)]

Methods

renderRoute :: Route WaiSubsite -> ([Text], [(Text, Text)]) Source #

RenderRoute WaiSubsiteWithAuth Source # |

Instance details

Defined in Yesod.Core.Types

Associated Types

data Route WaiSubsiteWithAuth |
Instance details Defined in Yesod.Core.Types data Route WaiSubsiteWithAuth = WaiSubsiteWithAuthRoute [Text] [(Text, Text)]

Methods

renderRoute :: Route WaiSubsiteWithAuth -> ([Text], [(Text, Text)]) Source #

class RenderRoute a => ParseRoute a where Source #

Methods

parseRoute Source #

Arguments

:: ([Text], [(Text, Text)]) | The path of the URL split on forward slashes, and a list of query parameters with their associated value.
-> Maybe (Route a) |

#### Instances

Instances details

ParseRoute LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route LiteApp) Source #
ParseRoute WaiSubsite Source # |
Instance details Defined in Yesod.Core.Types Methods parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route WaiSubsite) Source #
ParseRoute WaiSubsiteWithAuth Source # |
Instance details Defined in Yesod.Core.Types Methods parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route WaiSubsiteWithAuth) Source #

class RenderRoute a => RouteAttrs a where Source #

Methods

routeAttrs Source #

Arguments

:: Route a |
-> Set Text | A set of attributes associated with the route.

## Breadcrumbs

class YesodBreadcrumbs site where Source #

A type-safe, concise method of creating breadcrumbs for pages. For each resource, you declare the title of the page and the parent resource (if present).

Methods

breadcrumb :: Route site -> HandlerFor site (Text, Maybe (Route site)) Source #

Returns the title and the parent resource, if available. If you return a `Nothing`, then this is considered a top-level page.

breadcrumbs :: (YesodBreadcrumbs site, Show (Route site), Eq (Route site)) => HandlerFor site (Text, [(Route site, Text)]) Source #

Gets the title of the current page and the hierarchy of parent pages, along with their respective titles.

# Types

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

data FileUpload Source #

Constructors

FileUploadMemory !(BackEnd ByteString) |
FileUploadDisk !(InternalState -> BackEnd FilePath) |
FileUploadSource !(BackEnd (ConduitT () ByteString (ResourceT IO) ())) |

data ErrorResponse Source #

Responses to indicate some form of an error occurred.

Constructors

NotFound | The requested resource was not found. Examples of when this occurs include when an incorrect URL is used, or `yesod-persistent`'s `get404` doesn't find a value. HTTP status: 404.
InternalError !Text | Some sort of unexpected exception. If your application uses `throwIO` or `error` to throw an exception, this is the form it would take. HTTP status: 500.
InvalidArgs ![Text] | Indicates some sort of invalid or missing argument, like a missing query parameter or malformed JSON body. Examples Yesod functions that send this include `requireCheckJsonBody` and `Yesod.Auth.GoogleEmail2`. HTTP status: 400.
NotAuthenticated | Indicates the user is not logged in. This is thrown when `isAuthorized` returns `AuthenticationRequired`. HTTP code: 401.
PermissionDenied !Text | Indicates the user doesn't have permission to access the requested resource. This is thrown when `isAuthorized` returns `Unauthorized`. HTTP code: 403.
BadMethod !Method | Indicates the URL would have been valid if used with a different HTTP method (e.g. a GET was used, but only POST is handled.) HTTP code: 405.

#### Instances

Instances details

NFData ErrorResponse Source # |
Instance details Defined in Yesod.Core.Types Methods rnf :: ErrorResponse -> () Source #
Generic ErrorResponse Source # |

Instance details

Defined in Yesod.Core.Types

Associated Types

type Rep ErrorResponse |

Instance details

Defined in Yesod.Core.Types

type Rep ErrorResponse = D1 ('MetaData "ErrorResponse" "Yesod.Core.Types" "yesod-core-1.6.28.1-GtuhzYpuSxjJHyqnWHpgPq" 'False) ((C1 ('MetaCons "NotFound" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InternalError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "InvalidArgs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Text])))) :+: (C1 ('MetaCons "NotAuthenticated" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PermissionDenied" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "BadMethod" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Method)))))

Methods

from :: ErrorResponse -> Rep ErrorResponse x Source #

to :: Rep ErrorResponse x -> ErrorResponse Source #

Show ErrorResponse Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> ErrorResponse -> ShowS Source # show :: ErrorResponse -> String Source # showList :: [ErrorResponse] -> ShowS Source #
Eq ErrorResponse Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: ErrorResponse -> ErrorResponse -> Bool Source # (/=) :: ErrorResponse -> ErrorResponse -> Bool Source #
type Rep ErrorResponse Source # |

Instance details

Defined in Yesod.Core.Types

type Rep ErrorResponse = D1 ('MetaData "ErrorResponse" "Yesod.Core.Types" "yesod-core-1.6.28.1-GtuhzYpuSxjJHyqnWHpgPq" 'False) ((C1 ('MetaCons "NotFound" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InternalError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "InvalidArgs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Text])))) :+: (C1 ('MetaCons "NotAuthenticated" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PermissionDenied" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "BadMethod" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Method)))))

# Utilities

maybeAuthorized Source #

Arguments

:: Yesod site |
=> Route site |
-> Bool | is this a write request?
-> HandlerT site IO (Maybe (Route site)) |

Return the same URL if the user is authorized to see it.

Built on top of `isAuthorized`. This is useful for building page that only contain links to pages the user is allowed to see.

widgetToPageContent :: Yesod site => WidgetFor site () -> HandlerFor site (PageContent (Route site)) Source #

Convert a widget to a `PageContent`.

# Defaults

defaultErrorHandler :: Yesod site => ErrorResponse -> HandlerFor site TypedContent Source #

The default error handler for `errorHandler`.

defaultYesodMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res Source #

Default implementation of `yesodMiddleware`. Adds the response header "Vary: Accept, Accept-Language", "X-XSS-Protection: 1; mode=block", and performs authorization checks.

Since 1.2.0

authorizationCheck :: Yesod site => HandlerFor site () Source #

Check if a given request is authorized via `isAuthorized` and `isWriteRequest`.

Since 1.2.0

# Data types

data AuthResult Source #

Constructors

Authorized |
AuthenticationRequired |
Unauthorized !Text |

#### Instances

Instances details

Read AuthResult Source # |
Instance details Defined in Yesod.Core.Types Methods readsPrec :: Int -> ReadS AuthResult Source # readList :: ReadS [AuthResult] Source # readPrec :: ReadPrec AuthResult Source # readListPrec :: ReadPrec [AuthResult] Source #
Show AuthResult Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> AuthResult -> ShowS Source # show :: AuthResult -> String Source # showList :: [AuthResult] -> ShowS Source #
Eq AuthResult Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: AuthResult -> AuthResult -> Bool Source # (/=) :: AuthResult -> AuthResult -> Bool Source #

unauthorizedI :: (MonadHandler m, RenderMessage (HandlerSite m) msg) => msg -> m AuthResult Source #

Return an `Unauthorized` value, with the given i18n message.

# Logging

defaultMakeLogger :: IO Logger Source #

Default implementation of `makeLogger`. Sends to stdout and automatically flushes on each write.

Since 1.4.10

defaultMessageLoggerSource Source #

Arguments

:: (LogSource -> LogLevel -> IO Bool) | Check whether we should log this
-> Logger |
-> Loc | position in source code
-> LogSource |
-> LogLevel |
-> LogStr | message
-> IO () |

Default implementation of `messageLoggerSource`. Checks if the message should be logged using the provided function, and if so, formats using `formatLogMessage`. You can use `defaultShouldLogIO` as the provided function.

Since 1.4.10

defaultShouldLogIO :: LogSource -> LogLevel -> IO Bool Source #

Default implementation of `shouldLog`. Logs everything at or above `LevelInfo`.

Since 1.4.10

formatLogMessage Source #

Arguments

:: IO ZonedDate |
-> Loc |
-> LogSource |
-> LogLevel |
-> LogStr | message
-> IO LogStr |

Default formatting for log messages. When you use the template haskell logging functions for to log with information about the source location, that information will be appended to the end of the log. When you use the non-TH logging functions, like `logDebugN`, this function does not include source information. This currently works by checking to see if the package name is the string "<unknown>". This is a hack, but it removes some of the visual clutter from non-TH logs.

Since 1.4.10

data LogLevel Source #

Constructors

LevelDebug |
LevelInfo |
LevelWarn |
LevelError |
LevelOther Text |

#### Instances

Instances details

Read LogLevel |
Instance details Defined in Control.Monad.Logger Methods readsPrec :: Int -> ReadS LogLevel Source # readList :: ReadS [LogLevel] Source # readPrec :: ReadPrec LogLevel Source # readListPrec :: ReadPrec [LogLevel] Source #
Show LogLevel |
Instance details Defined in Control.Monad.Logger Methods showsPrec :: Int -> LogLevel -> ShowS Source # show :: LogLevel -> String Source # showList :: [LogLevel] -> ShowS Source #
Eq LogLevel |
Instance details Defined in Control.Monad.Logger Methods (==) :: LogLevel -> LogLevel -> Bool Source # (/=) :: LogLevel -> LogLevel -> Bool Source #
Ord LogLevel |
Instance details Defined in Control.Monad.Logger Methods compare :: LogLevel -> LogLevel -> Ordering Source # (<) :: LogLevel -> LogLevel -> Bool Source # (<=) :: LogLevel -> LogLevel -> Bool Source # (>) :: LogLevel -> LogLevel -> Bool Source # (>=) :: LogLevel -> LogLevel -> Bool Source # max :: LogLevel -> LogLevel -> LogLevel Source # min :: LogLevel -> LogLevel -> LogLevel Source #
Lift LogLevel |
Instance details Defined in Control.Monad.Logger Methods lift :: Quote m => LogLevel -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => LogLevel -> Code m LogLevel Source #

logDebug :: Q Exp Source #

Generates a function that takes a `Text` and logs a `LevelDebug` message. Usage:

    $(logDebug) "This is a debug log message"

logInfo :: Q Exp Source #

See `logDebug`

logWarn :: Q Exp Source #

See `logDebug`

logError :: Q Exp Source #

See `logDebug`

logOther :: Text -> Q Exp Source #

Generates a function that takes a `Text` and logs a `LevelOther` message. Usage:

    $(logOther "My new level") "This is a log message"

logDebugS :: Q Exp Source #

Generates a function that takes a `LogSource` and `Text` and logs a `LevelDebug` message. Usage:

    $logDebugS "SomeSource" "This is a debug log message"

logInfoS :: Q Exp Source #

See `logDebugS`

logWarnS :: Q Exp Source #

See `logDebugS`

logErrorS :: Q Exp Source #

See `logDebugS`

logOtherS :: Q Exp Source #

Generates a function that takes a `LogSource`, a level name and a `Text` and logs a `LevelOther` message. Usage:

    $logOtherS "SomeSource" "My new level" "This is a log message"

# Sessions

newtype SessionBackend Source #

Constructors

SessionBackend |

Fields

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

  Return the session data and a function to save the session

customizeSessionCookies :: (SetCookie -> SetCookie) -> SessionBackend -> SessionBackend Source #

Customize the cookies used by the session backend. You may use this function on your definition of `makeSessionBackend`.

For example, you could set the cookie domain so that it would work across many subdomains:

    makeSessionBackend site =
        (fmap . fmap) (customizeSessionCookies addDomain) ...
      where
        addDomain cookie = cookie { setCookieDomain = Just ".example.com" }

Default: Do not customize anything (`id`).

defaultClientSessionBackend Source #

Arguments

:: Int | minutes
-> FilePath | key file
-> IO SessionBackend |

envClientSessionBackend Source #

Arguments

:: Int | minutes
-> String | environment variable name
-> IO SessionBackend |

Create a `SessionBackend` which reads the session key from the named environment variable.

This can be useful if:

1. You can't rely on a persistent file system (e.g. Heroku)
2. Your application is open source (e.g. you can't commit the key)

By keeping a consistent value in the environment variable, your users will have consistent sessions without relying on the file system.

Note: A suitable value should only be obtained in one of two ways:

1. Run this code without the variable set, a value will be generated and printed on `devstdout/`
2. Use `clientsession-generate`

Since 1.4.5

clientSessionBackend Source #

Arguments

:: Key | The encryption key
-> IO ClientSessionDateCache | See `clientSessionDateCacher`
-> SessionBackend |

sslOnlySessions :: IO (Maybe SessionBackend) -> IO (Maybe SessionBackend) Source #

Defends against session hijacking by setting the secure bit on session cookies so that browsers will not transmit them over http. With this setting on, it follows that the server will regard requests made over http as sessionless, because the session cookie will not be included in the request. Use this as part of a total security measure which also includes disabling HTTP traffic to the site or issuing redirects from HTTP urls, and composing `sslOnlyMiddleware` with the site's `yesodMiddleware`.

Since 1.4.7

laxSameSiteSessions :: IO (Maybe SessionBackend) -> IO (Maybe SessionBackend) Source #

Helps defend against CSRF attacks by setting the SameSite attribute on session cookies to Lax. With the Lax setting, the cookie will be sent with same-site requests, and with cross-site top-level navigations.

This option is liable to change in future versions of Yesod as the spec evolves. View more information here.

Since: 1.4.23

strictSameSiteSessions :: IO (Maybe SessionBackend) -> IO (Maybe SessionBackend) Source #

Helps defend against CSRF attacks by setting the SameSite attribute on session cookies to Strict. With the Strict setting, the cookie will only be sent with same-site requests.

This option is liable to change in future versions of Yesod as the spec evolves. View more information here.

Since: 1.4.23

sslOnlyMiddleware Source #

Arguments

:: Int | minutes
-> HandlerFor site res |
-> HandlerFor site res |

Apply a Strict-Transport-Security header with the specified timeout to all responses so that browsers will rewrite all http links to https until the timeout expires. For security, the max-age of the STS header should always equal or exceed the client sessions timeout. This defends against SSL-stripping man-in-the-middle attacks. It is only effective if a secure connection has already been made; Strict-Transport-Security headers are ignored over HTTP.

Since 1.4.7

clientSessionDateCacher Source #

Arguments

:: NominalDiffTime | Inactive session validity.
-> IO (IO ClientSessionDateCache, IO ()) |

loadClientSession Source #

Arguments

:: Key |
-> IO ClientSessionDateCache | See `clientSessionDateCacher`
-> ByteString | session name
-> Request |
-> IO (SessionMap, SaveSession) |

data Header Source #

Headers to be added to a `Result`.

Constructors

AddCookie !SetCookie |
DeleteCookie !ByteString !ByteString | name and path
Header !(CI ByteString) !ByteString | key and value

#### Instances

Instances details

NFData Header Source # |
Instance details Defined in Yesod.Core.Types Methods rnf :: Header -> () Source #
Show Header Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> Header -> ShowS Source # show :: Header -> String Source # showList :: [Header] -> ShowS Source #
Eq Header Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: Header -> Header -> Bool Source # (/=) :: Header -> Header -> Bool Source #

# CSRF protection

defaultCsrfMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res Source #

Calls `defaultCsrfSetCookieMiddleware` and `defaultCsrfCheckMiddleware`.

For details, see the "AJAX CSRF protection" section of Yesod.Core.Handler.

You can chain this middleware together with other middleware like so:

    yesodMiddleware = defaultYesodMiddleware . defaultCsrfMiddleware

or:

    yesodMiddleware app = defaultYesodMiddleware $ defaultCsrfMiddleware $ app

Since 1.4.14

defaultCsrfSetCookieMiddleware :: HandlerFor site res -> HandlerFor site res Source #

Calls `csrfSetCookieMiddleware` with the `defaultCsrfCookieName`.

The cookie's path is set to `/`, making it valid for your whole website.

Since 1.4.14

csrfSetCookieMiddleware :: HandlerFor site res -> SetCookie -> HandlerFor site res Source #

Takes a `SetCookie` and overrides its value with a CSRF token, then sets the cookie. See `setCsrfCookieWithCookie`.

For details, see the "AJAX CSRF protection" section of Yesod.Core.Handler.

Make sure to set the `setCookiePath` to the root path of your application, otherwise you'll generate a new CSRF token for every path of your app. If your app is run from from e.g. www.example.com/app1, use `app1`. The vast majority of sites will just use `/`.

Since 1.4.14

defaultCsrfCheckMiddleware :: Yesod site => HandlerFor site res -> HandlerFor site res Source #

Calls `csrfCheckMiddleware` with `isWriteRequest`, `defaultCsrfHeaderName`, and `defaultCsrfParamName` as parameters.

Since 1.4.14

csrfCheckMiddleware Source #

Arguments

:: HandlerFor site res |
-> HandlerFor site Bool | Whether or not to perform the CSRF check.
-> CI ByteString | The header name to lookup the CSRF token from.
-> Text | The POST parameter name to lookup the CSRF token from.
-> HandlerFor site res |

Looks up the CSRF token from the request headers or POST parameters. If the value doesn't match the token stored in the session, this function throws a `PermissionDenied` error.

For details, see the "AJAX CSRF protection" section of Yesod.Core.Handler.

Since 1.4.14

# JS loaders

data ScriptLoadPosition master Source #

Constructors

BottomOfBody |
BottomOfHeadBlocking |
BottomOfHeadAsync !(BottomOfHeadAsync master) |

type BottomOfHeadAsync master Source #

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

# Generalizing type classes

class (MonadResource m, MonadLogger m) => MonadHandler (m :: Type -> Type) where Source #

Associated Types

type HandlerSite (m :: Type -> Type) Source #

type SubHandlerSite (m :: Type -> Type) Source #

Methods

liftHandler :: HandlerFor (HandlerSite m) a -> m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite m) (HandlerSite m) a -> m a Source #

#### Instances

Instances details

MonadHandler m => MonadHandler (MaybeT m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (MaybeT m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (MaybeT m) = HandlerSite m
type SubHandlerSite (MaybeT m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (MaybeT m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (MaybeT m)) a -> MaybeT m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (MaybeT m)) (HandlerSite (MaybeT m)) a -> MaybeT m a Source #

MonadHandler (HandlerFor site) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (HandlerFor site) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (HandlerFor site) = site
type SubHandlerSite (HandlerFor site) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (HandlerFor site) = site

Methods

liftHandler :: HandlerFor (HandlerSite (HandlerFor site)) a -> HandlerFor site a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (HandlerFor site)) (HandlerSite (HandlerFor site)) a -> HandlerFor site a Source #

MonadHandler (WidgetFor site) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (WidgetFor site) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (WidgetFor site) = site
type SubHandlerSite (WidgetFor site) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (WidgetFor site) = site

Methods

liftHandler :: HandlerFor (HandlerSite (WidgetFor site)) a -> WidgetFor site a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (WidgetFor site)) (HandlerSite (WidgetFor site)) a -> WidgetFor site a Source #

MonadHandler m => MonadHandler (ExceptT e m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (ExceptT e m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (ExceptT e m) = HandlerSite m
type SubHandlerSite (ExceptT e m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (ExceptT e m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (ExceptT e m)) a -> ExceptT e m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (ExceptT e m)) (HandlerSite (ExceptT e m)) a -> ExceptT e m a Source #

MonadHandler m => MonadHandler (IdentityT m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (IdentityT m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (IdentityT m) = HandlerSite m
type SubHandlerSite (IdentityT m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (IdentityT m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (IdentityT m)) a -> IdentityT m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (IdentityT m)) (HandlerSite (IdentityT m)) a -> IdentityT m a Source #

MonadHandler m => MonadHandler (ReaderT r m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (ReaderT r m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (ReaderT r m) = HandlerSite m
type SubHandlerSite (ReaderT r m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (ReaderT r m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (ReaderT r m)) a -> ReaderT r m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (ReaderT r m)) (HandlerSite (ReaderT r m)) a -> ReaderT r m a Source #

MonadHandler m => MonadHandler (StateT s m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (StateT s m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (StateT s m) = HandlerSite m
type SubHandlerSite (StateT s m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (StateT s m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (StateT s m)) a -> StateT s m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (StateT s m)) (HandlerSite (StateT s m)) a -> StateT s m a Source #

MonadHandler m => MonadHandler (StateT s m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (StateT s m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (StateT s m) = HandlerSite m
type SubHandlerSite (StateT s m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (StateT s m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (StateT s m)) a -> StateT s m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (StateT s m)) (HandlerSite (StateT s m)) a -> StateT s m a Source #

(Monoid w, MonadHandler m) => MonadHandler (WriterT w m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (WriterT w m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (WriterT w m) = HandlerSite m
type SubHandlerSite (WriterT w m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (WriterT w m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (WriterT w m)) a -> WriterT w m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (WriterT w m)) (HandlerSite (WriterT w m)) a -> WriterT w m a Source #

(Monoid w, MonadHandler m) => MonadHandler (WriterT w m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (WriterT w m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (WriterT w m) = HandlerSite m
type SubHandlerSite (WriterT w m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (WriterT w m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (WriterT w m)) a -> WriterT w m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (WriterT w m)) (HandlerSite (WriterT w m)) a -> WriterT w m a Source #

MonadHandler (SubHandlerFor sub master) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (SubHandlerFor sub master) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (SubHandlerFor sub master) = master
type SubHandlerSite (SubHandlerFor sub master) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (SubHandlerFor sub master) = sub

Methods

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

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

MonadHandler m => MonadHandler (ConduitM i o m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (ConduitM i o m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (ConduitM i o m) = HandlerSite m
type SubHandlerSite (ConduitM i o m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (ConduitM i o m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (ConduitM i o m)) a -> ConduitM i o m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (ConduitM i o m)) (HandlerSite (ConduitM i o m)) a -> ConduitM i o m a Source #

(Monoid w, MonadHandler m) => MonadHandler (RWST r w s m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (RWST r w s m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (RWST r w s m) = HandlerSite m
type SubHandlerSite (RWST r w s m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (RWST r w s m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (RWST r w s m)) a -> RWST r w s m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (RWST r w s m)) (HandlerSite (RWST r w s m)) a -> RWST r w s m a Source #

(Monoid w, MonadHandler m) => MonadHandler (RWST r w s m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (RWST r w s m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (RWST r w s m) = HandlerSite m
type SubHandlerSite (RWST r w s m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (RWST r w s m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (RWST r w s m)) a -> RWST r w s m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (RWST r w s m)) (HandlerSite (RWST r w s m)) a -> RWST r w s m a Source #

MonadHandler m => MonadHandler (Pipe l i o u m) Source # |

Instance details

Defined in Yesod.Core.Class.Handler

Associated Types

type HandlerSite (Pipe l i o u m) |
Instance details Defined in Yesod.Core.Class.Handler type HandlerSite (Pipe l i o u m) = HandlerSite m
type SubHandlerSite (Pipe l i o u m) |
Instance details Defined in Yesod.Core.Class.Handler type SubHandlerSite (Pipe l i o u m) = SubHandlerSite m

Methods

liftHandler :: HandlerFor (HandlerSite (Pipe l i o u m)) a -> Pipe l i o u m a Source #

liftSubHandler :: SubHandlerFor (SubHandlerSite (Pipe l i o u m)) (HandlerSite (Pipe l i o u m)) a -> Pipe l i o u m a Source #

class MonadHandler m => MonadWidget (m :: Type -> Type) where Source #

Methods

liftWidget :: WidgetFor (HandlerSite m) a -> m a Source #

#### Instances

Instances details

MonadWidget m => MonadWidget (MaybeT m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (MaybeT m)) a -> MaybeT m a Source #
MonadWidget (WidgetFor site) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (WidgetFor site)) a -> WidgetFor site a Source #
MonadWidget m => MonadWidget (ExceptT e m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (ExceptT e m)) a -> ExceptT e m a Source #
MonadWidget m => MonadWidget (IdentityT m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (IdentityT m)) a -> IdentityT m a Source #
MonadWidget m => MonadWidget (ReaderT r m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (ReaderT r m)) a -> ReaderT r m a Source #
MonadWidget m => MonadWidget (StateT s m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (StateT s m)) a -> StateT s m a Source #
MonadWidget m => MonadWidget (StateT s m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (StateT s m)) a -> StateT s m a Source #
(Monoid w, MonadWidget m) => MonadWidget (WriterT w m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (WriterT w m)) a -> WriterT w m a Source #
(Monoid w, MonadWidget m) => MonadWidget (WriterT w m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (WriterT w m)) a -> WriterT w m a Source #
MonadWidget m => MonadWidget (ConduitM i o m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (ConduitM i o m)) a -> ConduitM i o m a Source #
(Monoid w, MonadWidget m) => MonadWidget (RWST r w s m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (RWST r w s m)) a -> RWST r w s m a Source #
(Monoid w, MonadWidget m) => MonadWidget (RWST r w s m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (RWST r w s m)) a -> RWST r w s m a Source #
MonadWidget m => MonadWidget (Pipe l i o u m) Source # |
Instance details Defined in Yesod.Core.Class.Handler Methods liftWidget :: WidgetFor (HandlerSite (Pipe l i o u m)) a -> Pipe l i o u m a Source #

# Approot

guessApproot :: Approot site Source #

Guess the approot based on request headers. For more information, see Network.Wai.Middleware.Approot

In the case of headers being unavailable, it falls back to `ApprootRelative`

Since 1.4.16

guessApprootOr :: Approot site -> Approot site Source #

Guess the approot based on request headers, with fall back to the specified `AppRoot`.

Since 1.4.16

getApprootText :: Approot site -> site -> Request -> Text Source #

Get the textual application root from an `Approot` value.

Since 1.4.17

# Misc

yesodVersion :: String Source #

yesodRender Source #

Arguments

:: Yesod y |
=> y |
-> ResolvedApproot |
-> Route y |
-> [(Text, Text)] | url query string
-> Text |

runFakeHandler :: (Yesod site, MonadIO m) => SessionMap -> (site -> Logger) -> site -> HandlerT site IO a -> m (Either ErrorResponse a) Source #

Deprecated: import runFakeHandler from Yesod.Core.Unsafe

# LiteApp

newtype LiteApp Source #

Constructors

LiteApp |

Fields

- unLiteApp :: Method -> [Text] -> Maybe (LiteHandler TypedContent)

#### Instances

Instances details

Monoid LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods mempty :: LiteApp Source # mappend :: LiteApp -> LiteApp -> LiteApp Source # mconcat :: [LiteApp] -> LiteApp Source #
Semigroup LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods (<>) :: LiteApp -> LiteApp -> LiteApp Source # sconcat :: NonEmpty LiteApp -> LiteApp Source # stimes :: Integral b => b -> LiteApp -> LiteApp Source #
YesodDispatch LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods yesodDispatch :: YesodRunnerEnv LiteApp -> Application Source #
Yesod LiteApp Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Methods

approot :: Approot LiteApp Source #

catchHandlerExceptions :: MonadUnliftIO m => LiteApp -> m a -> (SomeException -> m a) -> m a Source #

errorHandler :: ErrorResponse -> HandlerFor LiteApp TypedContent Source #

defaultLayout :: WidgetFor LiteApp () -> HandlerFor LiteApp Html Source #

urlParamRenderOverride :: LiteApp -> Route LiteApp -> [(Text, Text)] -> Maybe Builder Source #

isAuthorized :: Route LiteApp -> Bool -> HandlerFor LiteApp AuthResult Source #

isWriteRequest :: Route LiteApp -> HandlerFor LiteApp Bool Source #

authRoute :: LiteApp -> Maybe (Route LiteApp) Source #

cleanPath :: LiteApp -> [Text] -> Either [Text] [Text] Source #

joinPath :: LiteApp -> Text -> [Text] -> [(Text, Text)] -> Builder Source #

addStaticContent :: Text -> Text -> ByteString -> HandlerFor LiteApp (Maybe (Either Text (Route LiteApp, [(Text, Text)]))) Source #

maximumContentLength :: LiteApp -> Maybe (Route LiteApp) -> Maybe Word64 Source #

maximumContentLengthIO :: LiteApp -> Maybe (Route LiteApp) -> IO (Maybe Word64) Source #

makeLogger :: LiteApp -> IO Logger Source #

messageLoggerSource :: LiteApp -> Logger -> Loc -> LogSource -> LogLevel -> LogStr -> IO () Source #

jsLoader :: LiteApp -> ScriptLoadPosition LiteApp Source #

jsAttributes :: LiteApp -> [(Text, Text)] Source #

jsAttributesHandler :: HandlerFor LiteApp [(Text, Text)] Source #

makeSessionBackend :: LiteApp -> IO (Maybe SessionBackend) Source #

fileUpload :: LiteApp -> RequestBodyLength -> FileUpload Source #

shouldLogIO :: LiteApp -> LogSource -> LogLevel -> IO Bool Source #

yesodMiddleware :: ToTypedContent res => HandlerFor LiteApp res -> HandlerFor LiteApp res Source #

yesodWithInternalState :: LiteApp -> Maybe (Route LiteApp) -> (InternalState -> IO a) -> IO a Source #

defaultMessageWidget :: Html -> HtmlUrl (Route LiteApp) -> WidgetFor LiteApp () Source #

ParseRoute LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route LiteApp) Source #
RenderRoute LiteApp Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Associated Types

data Route LiteApp |
Instance details Defined in Yesod.Core.Internal.LiteApp data Route LiteApp = LiteAppRoute [Text]

Methods

renderRoute :: Route LiteApp -> ([Text], [(Text, Text)]) Source #

Read (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods readsPrec :: Int -> ReadS (Route LiteApp) Source # readList :: ReadS [Route LiteApp] Source # readPrec :: ReadPrec (Route LiteApp) Source # readListPrec :: ReadPrec [Route LiteApp] Source #
Show (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods showsPrec :: Int -> Route LiteApp -> ShowS Source # show :: Route LiteApp -> String Source # showList :: [Route LiteApp] -> ShowS Source #
Eq (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods (==) :: Route LiteApp -> Route LiteApp -> Bool Source # (/=) :: Route LiteApp -> Route LiteApp -> Bool Source #
Ord (Route LiteApp) Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Methods

compare :: Route LiteApp -> Route LiteApp -> Ordering Source #

(<) :: Route LiteApp -> Route LiteApp -> Bool Source #

(<=) :: Route LiteApp -> Route LiteApp -> Bool Source #

(>) :: Route LiteApp -> Route LiteApp -> Bool Source #

(>=) :: Route LiteApp -> Route LiteApp -> Bool Source #

max :: Route LiteApp -> Route LiteApp -> Route LiteApp Source #

min :: Route LiteApp -> Route LiteApp -> Route LiteApp Source #

data Route LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp data Route LiteApp = LiteAppRoute [Text]

data family Route a Source #

The type-safe URLs associated with a site argument.

#### Instances

Instances details

RedirectUrl master (Route master) Source # |
Instance details Defined in Yesod.Core.Handler Methods toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => Route master -> m Text Source #
(key ~ Text, val ~ Text) => RedirectUrl master (Route master, Map key val) Source # |
Instance details Defined in Yesod.Core.Handler Methods toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => (Route master, Map key val) -> m Text Source #
(key ~ Text, val ~ Text) => RedirectUrl master (Route master, [(key, val)]) Source # |
Instance details Defined in Yesod.Core.Handler Methods toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => (Route master, [(key, val)]) -> m Text Source #
Read (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods readsPrec :: Int -> ReadS (Route LiteApp) Source # readList :: ReadS [Route LiteApp] Source # readPrec :: ReadPrec (Route LiteApp) Source # readListPrec :: ReadPrec [Route LiteApp] Source #
Read (Route WaiSubsite) Source # |
Instance details Defined in Yesod.Core.Types Methods readsPrec :: Int -> ReadS (Route WaiSubsite) Source # readList :: ReadS [Route WaiSubsite] Source # readPrec :: ReadPrec (Route WaiSubsite) Source # readListPrec :: ReadPrec [Route WaiSubsite] Source #
Read (Route WaiSubsiteWithAuth) Source # |
Instance details Defined in Yesod.Core.Types Methods readsPrec :: Int -> ReadS (Route WaiSubsiteWithAuth) Source # readList :: ReadS [Route WaiSubsiteWithAuth] Source # readPrec :: ReadPrec (Route WaiSubsiteWithAuth) Source # readListPrec :: ReadPrec [Route WaiSubsiteWithAuth] Source #
Show (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods showsPrec :: Int -> Route LiteApp -> ShowS Source # show :: Route LiteApp -> String Source # showList :: [Route LiteApp] -> ShowS Source #
Show (Route WaiSubsite) Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> Route WaiSubsite -> ShowS Source # show :: Route WaiSubsite -> String Source # showList :: [Route WaiSubsite] -> ShowS Source #
Show (Route WaiSubsiteWithAuth) Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> Route WaiSubsiteWithAuth -> ShowS Source # show :: Route WaiSubsiteWithAuth -> String Source # showList :: [Route WaiSubsiteWithAuth] -> ShowS Source #
Eq (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods (==) :: Route LiteApp -> Route LiteApp -> Bool Source # (/=) :: Route LiteApp -> Route LiteApp -> Bool Source #
Eq (Route WaiSubsite) Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source # (/=) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #
Eq (Route WaiSubsiteWithAuth) Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source # (/=) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #
Ord (Route LiteApp) Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Methods

compare :: Route LiteApp -> Route LiteApp -> Ordering Source #

(<) :: Route LiteApp -> Route LiteApp -> Bool Source #

(<=) :: Route LiteApp -> Route LiteApp -> Bool Source #

(>) :: Route LiteApp -> Route LiteApp -> Bool Source #

(>=) :: Route LiteApp -> Route LiteApp -> Bool Source #

max :: Route LiteApp -> Route LiteApp -> Route LiteApp Source #

min :: Route LiteApp -> Route LiteApp -> Route LiteApp Source #

Ord (Route WaiSubsite) Source # |

Instance details

Defined in Yesod.Core.Types

Methods

compare :: Route WaiSubsite -> Route WaiSubsite -> Ordering Source #

(<) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

(<=) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

(>) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

(>=) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

max :: Route WaiSubsite -> Route WaiSubsite -> Route WaiSubsite Source #

min :: Route WaiSubsite -> Route WaiSubsite -> Route WaiSubsite Source #

Ord (Route WaiSubsiteWithAuth) Source # |

Instance details

Defined in Yesod.Core.Types

Methods

compare :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Ordering Source #

(<) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

(<=) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

(>) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

(>=) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

max :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth Source #

min :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth Source #

data Route LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp data Route LiteApp = LiteAppRoute [Text]
data Route WaiSubsite Source # |
Instance details Defined in Yesod.Core.Types data Route WaiSubsite = WaiSubsiteRoute [Text] [(Text, Text)]
data Route WaiSubsiteWithAuth Source # |
Instance details Defined in Yesod.Core.Types data Route WaiSubsiteWithAuth = WaiSubsiteWithAuthRoute [Text] [(Text, Text)]

data family Route a Source #

The type-safe URLs associated with a site argument.

#### Instances

Instances details

RedirectUrl master (Route master) Source # |
Instance details Defined in Yesod.Core.Handler Methods toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => Route master -> m Text Source #
(key ~ Text, val ~ Text) => RedirectUrl master (Route master, Map key val) Source # |
Instance details Defined in Yesod.Core.Handler Methods toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => (Route master, Map key val) -> m Text Source #
(key ~ Text, val ~ Text) => RedirectUrl master (Route master, [(key, val)]) Source # |
Instance details Defined in Yesod.Core.Handler Methods toTextUrl :: (MonadHandler m, HandlerSite m ~ master) => (Route master, [(key, val)]) -> m Text Source #
Read (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods readsPrec :: Int -> ReadS (Route LiteApp) Source # readList :: ReadS [Route LiteApp] Source # readPrec :: ReadPrec (Route LiteApp) Source # readListPrec :: ReadPrec [Route LiteApp] Source #
Read (Route WaiSubsite) Source # |
Instance details Defined in Yesod.Core.Types Methods readsPrec :: Int -> ReadS (Route WaiSubsite) Source # readList :: ReadS [Route WaiSubsite] Source # readPrec :: ReadPrec (Route WaiSubsite) Source # readListPrec :: ReadPrec [Route WaiSubsite] Source #
Read (Route WaiSubsiteWithAuth) Source # |
Instance details Defined in Yesod.Core.Types Methods readsPrec :: Int -> ReadS (Route WaiSubsiteWithAuth) Source # readList :: ReadS [Route WaiSubsiteWithAuth] Source # readPrec :: ReadPrec (Route WaiSubsiteWithAuth) Source # readListPrec :: ReadPrec [Route WaiSubsiteWithAuth] Source #
Show (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods showsPrec :: Int -> Route LiteApp -> ShowS Source # show :: Route LiteApp -> String Source # showList :: [Route LiteApp] -> ShowS Source #
Show (Route WaiSubsite) Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> Route WaiSubsite -> ShowS Source # show :: Route WaiSubsite -> String Source # showList :: [Route WaiSubsite] -> ShowS Source #
Show (Route WaiSubsiteWithAuth) Source # |
Instance details Defined in Yesod.Core.Types Methods showsPrec :: Int -> Route WaiSubsiteWithAuth -> ShowS Source # show :: Route WaiSubsiteWithAuth -> String Source # showList :: [Route WaiSubsiteWithAuth] -> ShowS Source #
Eq (Route LiteApp) Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp Methods (==) :: Route LiteApp -> Route LiteApp -> Bool Source # (/=) :: Route LiteApp -> Route LiteApp -> Bool Source #
Eq (Route WaiSubsite) Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source # (/=) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #
Eq (Route WaiSubsiteWithAuth) Source # |
Instance details Defined in Yesod.Core.Types Methods (==) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source # (/=) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #
Ord (Route LiteApp) Source # |

Instance details

Defined in Yesod.Core.Internal.LiteApp

Methods

compare :: Route LiteApp -> Route LiteApp -> Ordering Source #

(<) :: Route LiteApp -> Route LiteApp -> Bool Source #

(<=) :: Route LiteApp -> Route LiteApp -> Bool Source #

(>) :: Route LiteApp -> Route LiteApp -> Bool Source #

(>=) :: Route LiteApp -> Route LiteApp -> Bool Source #

max :: Route LiteApp -> Route LiteApp -> Route LiteApp Source #

min :: Route LiteApp -> Route LiteApp -> Route LiteApp Source #

Ord (Route WaiSubsite) Source # |

Instance details

Defined in Yesod.Core.Types

Methods

compare :: Route WaiSubsite -> Route WaiSubsite -> Ordering Source #

(<) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

(<=) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

(>) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

(>=) :: Route WaiSubsite -> Route WaiSubsite -> Bool Source #

max :: Route WaiSubsite -> Route WaiSubsite -> Route WaiSubsite Source #

min :: Route WaiSubsite -> Route WaiSubsite -> Route WaiSubsite Source #

Ord (Route WaiSubsiteWithAuth) Source # |

Instance details

Defined in Yesod.Core.Types

Methods

compare :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Ordering Source #

(<) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

(<=) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

(>) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

(>=) :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Bool Source #

max :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth Source #

min :: Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth -> Route WaiSubsiteWithAuth Source #

data Route LiteApp Source # |
Instance details Defined in Yesod.Core.Internal.LiteApp data Route LiteApp = LiteAppRoute [Text]
data Route WaiSubsite Source # |
Instance details Defined in Yesod.Core.Types data Route WaiSubsite = WaiSubsiteRoute [Text] [(Text, Text)]
data Route WaiSubsiteWithAuth Source # |
Instance details Defined in Yesod.Core.Types data Route WaiSubsiteWithAuth = WaiSubsiteWithAuthRoute [Text] [(Text, Text)]

type LiteHandler = HandlerFor LiteApp Source #

type LiteWidget = WidgetFor LiteApp Source #

liteApp :: Writer LiteApp () -> LiteApp Source #

dispatchTo :: ToTypedContent a => LiteHandler a -> Writer LiteApp () Source #

onMethod :: Method -> Writer LiteApp () -> Writer LiteApp () Source #

onStatic :: Text -> Writer LiteApp () -> Writer LiteApp () Source #

withDynamic :: PathPiece p => (p -> Writer LiteApp ()) -> Writer LiteApp () Source #

withDynamicMulti :: PathMultiPiece ps => (ps -> Writer LiteApp ()) -> Writer LiteApp () Source #

# Low-level

yesodRunner :: (ToTypedContent res, Yesod site) => HandlerFor site res -> YesodRunnerEnv site -> Maybe (Route site) -> Application Source #

# Re-exports

module Yesod.Core.Content

module Yesod.Core.Dispatch

module Yesod.Core.Handler

module Yesod.Core.Widget

module Yesod.Core.Json

module Text.Shakespeare.I18N

formatW3 :: UTCTime -> Text Source #

Format a `UTCTime` in W3 format.

formatRFC1123 :: UTCTime -> Text Source #

Format as per RFC 1123.

formatRFC822 :: UTCTime -> Text Source #

Format as per RFC 822.

type Html = Markup Source #

toHtml :: ToMarkup a => a -> Html Source #

preEscapedToMarkup :: ToMarkup a => a -> Markup Source #

Convert a value to Markup without escaping

class (forall (m :: Type -> Type). Monad m => Monad (t m)) => MonadTrans (t :: (Type -> Type) -> Type -> Type) where Source #

The class of monad transformers. For any monad `m`, the result `t m` should also be a monad, and `lift` should be a monad transformation from `m` to `t m`, i.e. it should satisfy the following laws:

-     lift . return = return

-     lift (m >>= f) = lift m >>= (lift . f)

Since 0.6.0.0 and for GHC 8.6 and later, the requirement that `t m` be a `Monad` is enforced by the implication constraint `forall m. `Monad` m => `Monad` (t m)` enabled by the `QuantifiedConstraints` extension.

### Ambiguity error with GHC 9.0 to 9.2.2

Expand

These versions of GHC have a bug (https://gitlab.haskell.org/ghc/ghc/-/issues/20582) which causes constraints like

    (MonadTrans t, forall m. Monad m => Monad (t m)) => ...

to be reported as ambiguous. For transformers 0.6 and later, this can be fixed by removing the second constraint, which is implied by the first.

Methods

lift :: Monad m => m a -> t m a Source #

Lift a computation from the argument monad to the constructed monad.

#### Instances

Instances details

MonadTrans CatchT |
Instance details Defined in Control.Monad.Catch.Pure Methods lift :: Monad m => m a -> CatchT m a Source #
MonadTrans LoggingT |
Instance details Defined in Control.Monad.Logger Methods lift :: Monad m => m a -> LoggingT m a Source #
MonadTrans NoLoggingT |
Instance details Defined in Control.Monad.Logger Methods lift :: Monad m => m a -> NoLoggingT m a Source #
MonadTrans WriterLoggingT |
Instance details Defined in Control.Monad.Logger Methods lift :: Monad m => m a -> WriterLoggingT m a Source #
MonadTrans ResourceT |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods lift :: Monad m => m a -> ResourceT m a Source #
MonadTrans MaybeT |
Instance details Defined in Control.Monad.Trans.Maybe Methods lift :: Monad m => m a -> MaybeT m a Source #
Monoid w => MonadTrans (AccumT w) |
Instance details Defined in Control.Monad.Trans.Accum Methods lift :: Monad m => m a -> AccumT w m a Source #
MonadTrans (ExceptT e) |
Instance details Defined in Control.Monad.Trans.Except Methods lift :: Monad m => m a -> ExceptT e m a Source #
MonadTrans (IdentityT :: (Type -> Type) -> Type -> Type) |
Instance details Defined in Control.Monad.Trans.Identity Methods lift :: Monad m => m a -> IdentityT m a Source #
MonadTrans (ReaderT r) |
Instance details Defined in Control.Monad.Trans.Reader Methods lift :: Monad m => m a -> ReaderT r m a Source #
MonadTrans (SelectT r) |
Instance details Defined in Control.Monad.Trans.Select Methods lift :: Monad m => m a -> SelectT r m a Source #
MonadTrans (StateT s) |
Instance details Defined in Control.Monad.Trans.State.Lazy Methods lift :: Monad m => m a -> StateT s m a Source #
MonadTrans (StateT s) |
Instance details Defined in Control.Monad.Trans.State.Strict Methods lift :: Monad m => m a -> StateT s m a Source #
MonadTrans (WriterT w) |
Instance details Defined in Control.Monad.Trans.Writer.CPS Methods lift :: Monad m => m a -> WriterT w m a Source #
Monoid w => MonadTrans (WriterT w) |
Instance details Defined in Control.Monad.Trans.Writer.Lazy Methods lift :: Monad m => m a -> WriterT w m a Source #
Monoid w => MonadTrans (WriterT w) |
Instance details Defined in Control.Monad.Trans.Writer.Strict Methods lift :: Monad m => m a -> WriterT w m a Source #
MonadTrans (ConduitT i o) |
Instance details Defined in Data.Conduit.Internal.Conduit Methods lift :: Monad m => m a -> ConduitT i o m a Source #
MonadTrans (ParsecT s u) |
Instance details Defined in Text.Parsec.Prim Methods lift :: Monad m => m a -> ParsecT s u m a Source #
MonadTrans (ContT r) |
Instance details Defined in Control.Monad.Trans.Cont Methods lift :: Monad m => m a -> ContT r m a Source #
MonadTrans (RWST r w s) |
Instance details Defined in Control.Monad.Trans.RWS.CPS Methods lift :: Monad m => m a -> RWST r w s m a Source #
Monoid w => MonadTrans (RWST r w s) |
Instance details Defined in Control.Monad.Trans.RWS.Lazy Methods lift :: Monad m => m a -> RWST r w s m a Source #
Monoid w => MonadTrans (RWST r w s) |
Instance details Defined in Control.Monad.Trans.RWS.Strict Methods lift :: Monad m => m a -> RWST r w s m a Source #
MonadTrans (Pipe l i o u) |
Instance details Defined in Data.Conduit.Internal.Pipe Methods lift :: Monad m => m a -> Pipe l i o u m a Source #

class Monad m => MonadIO (m :: Type -> Type) where Source #

Monads in which `IO` computations may be embedded. Any monad built by applying a sequence of monad transformers to the `IO` monad will be an instance of this class.

Instances should satisfy the following laws, which state that `liftIO` is a transformer of monads:

-     liftIO . return = return

-     liftIO (m >>= f) = liftIO m >>= (liftIO . f)

Methods

liftIO :: IO a -> m a Source #

Lift a computation from the `IO` monad. This allows us to run IO computations in any monadic stack, so long as it supports these kinds of operations (i.e. `IO` is the base monad for the stack).

### Example

Expand

    import Control.Monad.Trans.State -- from the "transformers" library

    printState :: Show s => StateT s IO ()
    printState = do
      state <- get
      liftIO $ print state

Had we omitted ``liftIO``, we would have ended up with this error:

    • Couldn't match type ‘IO’ with ‘StateT s IO’
     Expected type: StateT s IO ()
       Actual type: IO ()

The important part here is the mismatch between `StateT s IO ()` and ``IO` ()`.

Luckily, we know of a function that takes an ``IO` a` and returns an `(m a)`: ``liftIO``, enabling us to run the program and see the expected results:

    > evalStateT printState "hello"
    "hello"

    > evalStateT printState 3
    3

#### Instances

Instances details

MonadIO IO | Since: base-4.9.0.0
Instance details Defined in Control.Monad.IO.Class Methods liftIO :: IO a -> IO a Source #
MonadIO Acquire |
Instance details Defined in Data.Acquire.Internal Methods liftIO :: IO a -> Acquire a Source #
MonadIO Q |
Instance details Defined in Language.Haskell.TH.Syntax Methods liftIO :: IO a -> Q a Source #
MonadIO m => MonadIO (CatchT m) |
Instance details Defined in Control.Monad.Catch.Pure Methods liftIO :: IO a -> CatchT m a Source #
MonadIO m => MonadIO (LoggingT m) |
Instance details Defined in Control.Monad.Logger Methods liftIO :: IO a -> LoggingT m a Source #
MonadIO m => MonadIO (NoLoggingT m) |
Instance details Defined in Control.Monad.Logger Methods liftIO :: IO a -> NoLoggingT m a Source #
MonadIO m => MonadIO (WriterLoggingT m) |
Instance details Defined in Control.Monad.Logger Methods liftIO :: IO a -> WriterLoggingT m a Source #
MonadIO m => MonadIO (ResourceT m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftIO :: IO a -> ResourceT m a Source #
MonadIO m => MonadIO (MaybeT m) |
Instance details Defined in Control.Monad.Trans.Maybe Methods liftIO :: IO a -> MaybeT m a Source #
MonadIO (HandlerFor site) Source # |
Instance details Defined in Yesod.Core.Types Methods liftIO :: IO a -> HandlerFor site a Source #
MonadIO (WidgetFor site) Source # |
Instance details Defined in Yesod.Core.Types Methods liftIO :: IO a -> WidgetFor site a Source #
(Monoid w, Functor m, MonadIO m) => MonadIO (AccumT w m) |
Instance details Defined in Control.Monad.Trans.Accum Methods liftIO :: IO a -> AccumT w m a Source #
MonadIO m => MonadIO (ExceptT e m) |
Instance details Defined in Control.Monad.Trans.Except Methods liftIO :: IO a -> ExceptT e m a Source #
MonadIO m => MonadIO (IdentityT m) |
Instance details Defined in Control.Monad.Trans.Identity Methods liftIO :: IO a -> IdentityT m a Source #
MonadIO m => MonadIO (ReaderT r m) |
Instance details Defined in Control.Monad.Trans.Reader Methods liftIO :: IO a -> ReaderT r m a Source #
MonadIO m => MonadIO (SelectT r m) |
Instance details Defined in Control.Monad.Trans.Select Methods liftIO :: IO a -> SelectT r m a Source #
MonadIO m => MonadIO (StateT s m) |
Instance details Defined in Control.Monad.Trans.State.Lazy Methods liftIO :: IO a -> StateT s m a Source #
MonadIO m => MonadIO (StateT s m) |
Instance details Defined in Control.Monad.Trans.State.Strict Methods liftIO :: IO a -> StateT s m a Source #
MonadIO m => MonadIO (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Writer.CPS Methods liftIO :: IO a -> WriterT w m a Source #
(Monoid w, MonadIO m) => MonadIO (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Writer.Lazy Methods liftIO :: IO a -> WriterT w m a Source #
(Monoid w, MonadIO m) => MonadIO (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Writer.Strict Methods liftIO :: IO a -> WriterT w m a Source #
MonadIO (SubHandlerFor child master) Source # |
Instance details Defined in Yesod.Core.Types Methods liftIO :: IO a -> SubHandlerFor child master a Source #
MonadIO m => MonadIO (ConduitT i o m) |
Instance details Defined in Data.Conduit.Internal.Conduit Methods liftIO :: IO a -> ConduitT i o m a Source #
MonadIO m => MonadIO (ParsecT s u m) |
Instance details Defined in Text.Parsec.Prim Methods liftIO :: IO a -> ParsecT s u m a Source #
MonadIO m => MonadIO (ContT r m) |
Instance details Defined in Control.Monad.Trans.Cont Methods liftIO :: IO a -> ContT r m a Source #
MonadIO m => MonadIO (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.RWS.CPS Methods liftIO :: IO a -> RWST r w s m a Source #
(Monoid w, MonadIO m) => MonadIO (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.RWS.Lazy Methods liftIO :: IO a -> RWST r w s m a Source #
(Monoid w, MonadIO m) => MonadIO (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.RWS.Strict Methods liftIO :: IO a -> RWST r w s m a Source #
MonadIO m => MonadIO (Pipe l i o u m) |
Instance details Defined in Data.Conduit.Internal.Pipe Methods liftIO :: IO a -> Pipe l i o u m a Source #

class MonadIO m => MonadUnliftIO (m :: Type -> Type) where #

Methods

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

#### Instances

Instances details

MonadUnliftIO IO |
Instance details Defined in Control.Monad.IO.Unlift Methods withRunInIO :: ((forall a. IO a -> IO a) -> IO b) -> IO b #
MonadUnliftIO m => MonadUnliftIO (LoggingT m) | Since: monad-logger-0.3.26
Instance details Defined in Control.Monad.Logger Methods withRunInIO :: ((forall a. LoggingT m a -> IO a) -> IO b) -> LoggingT m b #
MonadUnliftIO m => MonadUnliftIO (NoLoggingT m) | Since: monad-logger-0.3.26
Instance details Defined in Control.Monad.Logger Methods withRunInIO :: ((forall a. NoLoggingT m a -> IO a) -> IO b) -> NoLoggingT m b #
MonadUnliftIO m => MonadUnliftIO (ResourceT m) | Since: resourcet-1.1.10
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods withRunInIO :: ((forall a. ResourceT m a -> IO a) -> IO b) -> ResourceT m b #
MonadUnliftIO (HandlerFor site) Source # | Since: 1.4.38
Instance details Defined in Yesod.Core.Types Methods withRunInIO :: ((forall a. HandlerFor site a -> IO a) -> IO b) -> HandlerFor site b #
MonadUnliftIO (WidgetFor site) Source # | Since: 1.4.38
Instance details Defined in Yesod.Core.Types Methods withRunInIO :: ((forall a. WidgetFor site a -> IO a) -> IO b) -> WidgetFor site b #
MonadUnliftIO m => MonadUnliftIO (IdentityT m) |
Instance details Defined in Control.Monad.IO.Unlift Methods withRunInIO :: ((forall a. IdentityT m a -> IO a) -> IO b) -> IdentityT m b #
MonadUnliftIO m => MonadUnliftIO (ReaderT r m) |
Instance details Defined in Control.Monad.IO.Unlift Methods withRunInIO :: ((forall a. ReaderT r m a -> IO a) -> IO b) -> ReaderT r m b #
MonadUnliftIO (SubHandlerFor child master) Source # | Since: 1.4.38
Instance details Defined in Yesod.Core.Types Methods withRunInIO :: ((forall a. SubHandlerFor child master a -> IO a) -> IO b) -> SubHandlerFor child master b #

class MonadIO m => MonadResource (m :: Type -> Type) where Source #

A `Monad` which allows for safe resource allocation. In theory, any monad transformer stack which includes a `ResourceT` can be an instance of `MonadResource`.

Note: `runResourceT` has a requirement for a `MonadUnliftIO m` monad, which allows control operations to be lifted. A `MonadResource` does not have this requirement. This means that transformers such as `ContT` can be an instance of `MonadResource`. However, the `ContT` wrapper will need to be unwrapped before calling `runResourceT`.

Since 0.3.0

Methods

liftResourceT :: ResourceT IO a -> m a Source #

Lift a `ResourceT IO` action into the current `Monad`.

Since 0.4.0

#### Instances

Instances details

MonadResource m => MonadResource (LoggingT m) |
Instance details Defined in Control.Monad.Logger Methods liftResourceT :: ResourceT IO a -> LoggingT m a Source #
MonadResource m => MonadResource (NoLoggingT m) |
Instance details Defined in Control.Monad.Logger Methods liftResourceT :: ResourceT IO a -> NoLoggingT m a Source #
MonadIO m => MonadResource (ResourceT m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> ResourceT m a Source #
MonadResource m => MonadResource (MaybeT m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> MaybeT m a Source #
MonadResource (HandlerFor site) Source # |
Instance details Defined in Yesod.Core.Types Methods liftResourceT :: ResourceT IO a -> HandlerFor site a Source #
MonadResource (WidgetFor site) Source # |
Instance details Defined in Yesod.Core.Types Methods liftResourceT :: ResourceT IO a -> WidgetFor site a Source #
MonadResource m => MonadResource (ExceptT e m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> ExceptT e m a Source #
MonadResource m => MonadResource (IdentityT m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> IdentityT m a Source #
MonadResource m => MonadResource (ReaderT r m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> ReaderT r m a Source #
MonadResource m => MonadResource (StateT s m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> StateT s m a Source #
MonadResource m => MonadResource (StateT s m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> StateT s m a Source #
(Monoid w, MonadResource m) => MonadResource (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> WriterT w m a Source #
(Monoid w, MonadResource m) => MonadResource (WriterT w m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> WriterT w m a Source #
MonadResource (SubHandlerFor child master) Source # |
Instance details Defined in Yesod.Core.Types Methods liftResourceT :: ResourceT IO a -> SubHandlerFor child master a Source #
MonadResource m => MonadResource (ConduitT i o m) |
Instance details Defined in Data.Conduit.Internal.Conduit Methods liftResourceT :: ResourceT IO a -> ConduitT i o m a Source #
MonadResource m => MonadResource (ContT r m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> ContT r m a Source #
(Monoid w, MonadResource m) => MonadResource (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> RWST r w s m a Source #
(Monoid w, MonadResource m) => MonadResource (RWST r w s m) |
Instance details Defined in Control.Monad.Trans.Resource.Internal Methods liftResourceT :: ResourceT IO a -> RWST r w s m a Source #
MonadResource m => MonadResource (Pipe l i o u m) |
Instance details Defined in Data.Conduit.Internal.Pipe Methods liftResourceT :: ResourceT IO a -> Pipe l i o u m a Source #

class Monad m => MonadLogger (m :: Type -> Type) Source #

A `Monad` which has the ability to log messages in some manner.

#### Instances

Instances details

MonadIO m => MonadLogger (LoggingT m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> LoggingT m () Source #
Monad m => MonadLogger (NoLoggingT m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> NoLoggingT m () Source #
Monad m => MonadLogger (WriterLoggingT m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterLoggingT m () Source #
MonadLogger m => MonadLogger (ResourceT m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ResourceT m () Source #
MonadLogger m => MonadLogger (MaybeT m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> MaybeT m () Source #
MonadLogger (HandlerFor site) Source # |
Instance details Defined in Yesod.Core.Types Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> HandlerFor site () Source #
MonadLogger (WidgetFor site) Source # |
Instance details Defined in Yesod.Core.Types Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WidgetFor site () Source #
MonadLogger m => MonadLogger (ExceptT e m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ExceptT e m () Source #
MonadLogger m => MonadLogger (IdentityT m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> IdentityT m () Source #
MonadLogger m => MonadLogger (ReaderT r m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ReaderT r m () Source #
MonadLogger m => MonadLogger (StateT s m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> StateT s m () Source #
MonadLogger m => MonadLogger (StateT s m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> StateT s m () Source #
(MonadLogger m, Monoid w) => MonadLogger (WriterT w m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterT w m () Source #
(MonadLogger m, Monoid w) => MonadLogger (WriterT w m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> WriterT w m () Source #
MonadLogger (SubHandlerFor child master) Source # |
Instance details Defined in Yesod.Core.Types Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> SubHandlerFor child master () Source #
MonadLogger m => MonadLogger (ConduitM i o m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ConduitM i o m () Source #
MonadLogger m => MonadLogger (ContT r m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> ContT r m () Source #
(MonadLogger m, Monoid w) => MonadLogger (RWST r w s m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> RWST r w s m () Source #
(MonadLogger m, Monoid w) => MonadLogger (RWST r w s m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> RWST r w s m () Source #
MonadLogger m => MonadLogger (Pipe l i o u m) |
Instance details Defined in Control.Monad.Logger Methods monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> Pipe l i o u m () Source #

# Commonly referenced functions/datatypes

type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived Source #

The WAI application.

Note that, since WAI 3.0, this type is structured in continuation passing style to allow for proper safe resource handling. This was handled in the past via other means (e.g., `ResourceT`). As a demonstration:

    app :: Application
    app req respond = bracket_
        (putStrLn "Allocating scarce resource")
        (putStrLn "Cleaning up")
        (respond $ responseLBS status200 [] "Hello World")

# Utilities

showIntegral :: Integral a => a -> String Source #

readIntegral :: Num a => String -> Maybe a Source #

# Shakespeare

## Hamlet

hamlet :: QuasiQuoter Source #

Hamlet quasi-quoter. May only be used to generate expressions.

Generated expression have type ``HtmlUrl` url`, for some `url`.

    data MyRoute = Home

    render :: Render MyRoute
    render Home _ = "/home"

    >>> putStrLn (renderHtml ([hamlet|<a href=@{Home}>Home|] render))
    <a href="/home">Home</a>

shamlet :: QuasiQuoter Source #

"Simple Hamlet" quasi-quoter. May only be used to generate expressions.

Generated expressions have type `Html`.

    >>> putStrLn (renderHtml [shamlet|<div>Hello, world!|])
    <div>Hello, world!</div>

xhamlet :: QuasiQuoter Source #

Like `hamlet`, but produces XHTML.

type HtmlUrl url = Render url -> Html Source #

A function generating an `Html` given a URL-rendering function.

## Julius

julius :: QuasiQuoter Source #

type JavascriptUrl url = (url -> [(Text, Text)] -> Text) -> Javascript Source #

Return type of template-reading functions.

renderJavascriptUrl :: (url -> [(Text, Text)] -> Text) -> JavascriptUrl url -> Text Source #

render with route interpolation. If using this module standalone, apart from type-safe routes, a dummy renderer can be used:

    renderJavascriptUrl (\_ _ -> undefined) javascriptUrl

When using Yesod, a renderer is generated for you, which can be accessed within the GHandler monad: `getUrlRenderParams`.

## Cassius/Lucius

cassius :: QuasiQuoter Source #

lucius :: QuasiQuoter Source #

    >>> renderCss ([lucius|foo{bar:baz}|] undefined)
    "foo{bar:baz}"

type CssUrl url = (url -> [(Text, Text)] -> Text) -> Css Source #

renderCssUrl :: (url -> [(Text, Text)] -> Text) -> CssUrl url -> Text Source #