web-routes-0.27.13: portable, type-safe URL routing

Web.Routes.Site

Synopsis

# Documentation

data Site url a Source #

A site groups together the three functions necesary to make an application:

• A function to convert from the URL type to path segments.
• A function to convert from path segments to the URL, if possible.
• A function to return the application for a given URL.

There are two type parameters for Site: the first is the URL datatype, the second is the application datatype. The application datatype will depend upon your server backend.

Constructors

 Site FieldshandleSite :: (url -> [(Text, Maybe Text)] -> Text) -> url -> aReturn the appropriate application for a given URL.The first argument is a function which will give an appropriate URL (as a String) for a URL datatype. This is usually constructed by a combination of formatPathSegments and the prepending of an absolute application root.Well behaving applications should use this function to generating all internal URLs.formatPathSegments :: url -> ([Text], [(Text, Maybe Text)])This function must be the inverse of parsePathSegments.parsePathSegments :: [Text] -> Either String urlThis function must be the inverse of formatPathSegments.

Instances

 Functor (Site url) Source # Methodsfmap :: (a -> b) -> Site url a -> Site url b #(<\$) :: a -> Site url b -> Site url a #

setDefault :: url -> Site url a -> Site url a Source #

Override the "default" URL, ie the result of parsePathSegments [].

Arguments

 :: Text application root, with trailing slash -> Site url a -> [Text] path info, (call decodePathInfo on path with leading slash stripped) -> Either String a

Retrieve the application to handle a given request.

NOTE: use decodePathInfo to convert a ByteString url to a properly decoded list of path segments