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




Type classes

class RenderRoute (Route a) => Yesod a whereSource

Define settings for a Yesod applications. The only required setting is approot; other than that, there are intelligent defaults.


approot :: a -> TextSource

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

If you want to be lazy, you can supply an empty string under the following conditions:

  • Your application is served from the root of the domain.
  • You do not use any features that require absolute URLs, such as Atom feeds and XML sitemaps.

encryptKey :: a -> IO (Maybe Key)Source

The encryption key to be used for encrypting client sessions. Returning Nothing disables sessions.

clientSessionDuration :: a -> IntSource

Number of minutes before a client session times out. Defaults to 120 (2 hours).

errorHandler :: ErrorResponse -> GHandler sub a ChooseRepSource

Output error response pages.

defaultLayout :: GWidget sub a () -> GHandler sub a RepHtmlSource

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

urlRenderOverride :: a -> Route a -> Maybe BuilderSource

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



:: Route a 
-> Bool

is this a write request?

-> GHandler s a AuthResult 

Determine if a request is authorized or not.

Return Nothing is the request is authorized, Just a message if unauthorized. If authentication is required, you should use a redirect; the Auth helper provides this functionality automatically.

isWriteRequest :: Route a -> GHandler s a BoolSource

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 :: a -> Maybe (Route a)Source

The default route for authentication.

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

cleanPath :: a -> [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.



:: a 
-> Text

application root

-> [Text]

path pieces

-> [(Text, Text)]

query string

-> Builder 

Join the pieces of a path together into an absolute URL. This should be the inverse of splitPath.



:: Text

filename extension

-> Text


-> ByteString


-> GHandler sub a (Maybe (Either Text (Route a, [(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.

sessionIpAddress :: a -> BoolSource

Whether or not to tie a session to a specific IP address. Defaults to True.

cookiePath :: a -> ByteStringSource

The path value to set for cookies. By default, uses "/", meaning cookies will be sent to every page on the current domain.

maximumContentLength :: a -> Maybe (Route a) -> IntSource

Maximum allowed length of the request body, in bytes.



:: a 
-> Loc

position in source code

-> LogLevel 
-> Text


-> IO () 

Send a message to the log. By default, prints to stderr.

class YesodDispatch a master whereSource

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


yesodDispatch :: Yesod master => a -> Maybe Key -> [Text] -> master -> (Route a -> Route master) -> Maybe ApplicationSource

yesodRunner :: Yesod master => a -> master -> (Route a -> Route master) -> Maybe Key -> Maybe (Route a) -> GHandler a master ChooseRep -> ApplicationSource

class Eq u => RenderRoute u whereSource


renderRoute :: u -> ([Text], [(Text, Text)])Source


class YesodBreadcrumbs y whereSource

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


breadcrumb :: Route y -> GHandler sub y (Text, Maybe (Route y))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 y => GHandler sub y (Text, [(Route y, Text)])Source

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




:: Yesod a 
=> Route a 
-> Bool

is this a write request?

-> GHandler s a (Maybe (Route a)) 

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 :: (Eq (Route master), Yesod master) => GWidget sub master () -> GHandler sub master (PageContent (Route master))Source

Convert a widget to a PageContent.


defaultErrorHandler :: Yesod y => ErrorResponse -> GHandler sub y ChooseRepSource

The default error handler for errorHandler.

Data types




:: Loc 
-> LogLevel 
-> Text


-> IO Text 

logDebug :: Q ExpSource

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

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

logOther :: Text -> Q ExpSource

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

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


yesodRender :: Yesod y => y -> Route y -> [(Text, Text)] -> TextSource