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

Safe Haskell | None

Yesod.Core.Dispatch

Contents

- Quasi-quoted routing
  - More fine-grained
  - Path pieces
- Convert to WAI
- WAI subsites

Synopsis

- parseRoutes :: QuasiQuoter
- parseRoutesNoCheck :: QuasiQuoter
- parseRoutesFile :: FilePath -> Q Exp
- parseRoutesFileNoCheck :: FilePath -> Q Exp
- mkYesod :: String -> [ResourceTree String] -> Q [Dec]
- mkYesodData :: String -> [ResourceTree String] -> Q [Dec]
- mkYesodSubData :: String -> [ResourceTree String] -> Q [Dec]
- mkYesodDispatch :: String -> [ResourceTree String] -> Q [Dec]
- mkYesodSubDispatch :: [ResourceTree a] -> Q Exp
- class PathPiece s where
  - fromPathPiece :: Text -> Maybe s
  - toPathPiece :: s -> Text
- class PathMultiPiece s where
  - fromPathMultiPiece :: [Text] -> Maybe s
  - toPathMultiPiece :: s -> [Text]
- type Texts = [Text]
- toWaiApp :: YesodDispatch site => site -> IO Application
- toWaiAppPlain :: YesodDispatch site => site -> IO Application
- warp :: YesodDispatch site => Int -> site -> IO ()
- warpDebug :: YesodDispatch site => Int -> site -> IO ()
- warpEnv :: YesodDispatch site => site -> IO ()
- mkDefaultMiddlewares :: Logger -> IO Middleware
- newtype WaiSubsite = WaiSubsite {
  - runWaiSubsite :: Application
  }

# Quasi-quoted routing

parseRoutes :: QuasiQuoter

A quasi-quoter to parse a string into a list of `Resource`s. Checks for overlapping routes, failing if present; use `parseRoutesNoCheck` to skip the checking. See documentation site for details on syntax.

parseRoutesNoCheck :: QuasiQuoter

Same as `parseRoutes`, but performs no overlap checking.

parseRoutesFile :: FilePath -> Q Exp

parseRoutesFileNoCheck :: FilePath -> Q Exp

mkYesod

Arguments

:: String | name of the argument datatype
-> [ResourceTree String] |
-> Q [Dec] |

Generates URL datatype and site function for the given `Resource`s. This is used for creating sites, not subsites. See `mkYesodSub` for the latter. Use `parseRoutes` to create the `Resource`s.

## More fine-grained

mkYesodData :: String -> [ResourceTree String] -> Q [Dec]

Sometimes, you will want to declare your routes in one file and define your handlers elsewhere. For example, this is the only way to break up a monolithic file into smaller parts. Use this function, paired with `mkYesodDispatch`, to do just that.

mkYesodSubData :: String -> [ResourceTree String] -> Q [Dec]

mkYesodDispatch :: String -> [ResourceTree String] -> Q [Dec]

See `mkYesodData`.

mkYesodSubDispatch :: [ResourceTree a] -> Q Exp

## Path pieces

class PathPiece s where

Methods

fromPathPiece :: Text -> Maybe s

toPathPiece :: s -> Text

Instances

PathPiece Int |
PathPiece Int64 |
PathPiece Integer |
PathPiece String |
PathPiece Text |
PathPiece Text |
PathPiece Day |

class PathMultiPiece s where

Methods

fromPathMultiPiece :: [Text] -> Maybe s

toPathMultiPiece :: s -> [Text]

Instances

PathMultiPiece [String] |
PathMultiPiece [Text] |
PathMultiPiece [Text] |

type Texts = [Text]

# Convert to WAI

toWaiApp :: YesodDispatch site => site -> IO Application

Same as `toWaiAppPlain`, but provides a default set of middlewares. This set may change with future releases, but currently covers:

- Logging
- GZIP compression
- Automatic HEAD method handling
- Request method override with the _method query string parameter
- Accept header override with the _accept query string parameter

toWaiAppPlain :: YesodDispatch site => site -> IO Application

Convert the given argument into a WAI application, executable with any WAI handler. This function will provide no middlewares; if you want commonly used middlewares, please use `toWaiApp`.

warp :: YesodDispatch site => Int -> site -> IO ()

A convenience method to run an application using the Warp webserver on the specified port. Automatically calls `toWaiApp`. Provides a default set of middlewares. This set may change at any point without a breaking version number. Currently, it includes:

If you need more fine-grained control of middlewares, please use `toWaiApp` directly.

Since 1.2.0

warpDebug :: YesodDispatch site => Int -> site -> IO ()

Deprecated: Please use warp instead

Deprecated synonym for `warp`.

warpEnv :: YesodDispatch site => site -> IO ()

Runs your application using default middlewares (i.e., via `toWaiApp`). It reads port information from the PORT environment variable, as used by tools such as Keter and the FP Complete School of Haskell.

Note that the exact behavior of this function may be modified slightly over time to work correctly with external tools, without a change to the type signature.

mkDefaultMiddlewares :: Logger -> IO Middleware

A default set of middlewares.

Since 1.2.0

# WAI subsites

newtype WaiSubsite

Wrap up a normal WAI application as a Yesod subsite.

Constructors

WaiSubsite |
Fields runWaiSubsite :: Application

Instances

RenderRoute WaiSubsite |
ParseRoute WaiSubsite |
YesodSubDispatch WaiSubsite master |
Eq (Route WaiSubsite) |
Ord (Route WaiSubsite) |
Read (Route WaiSubsite) |
Show (Route WaiSubsite) |