web-routes-0.27.14.3: portable, type-safe URL routing
Safe HaskellNone
LanguageHaskell98

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 

Fields

  • handleSite :: (url -> [(Text, Maybe Text)] -> Text) -> url -> a

    Return 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 url

    This function must be the inverse of formatPathSegments.

Instances

Instances details
Functor (Site url) Source # 
Instance details

Defined in Web.Routes.Site

Methods

fmap :: (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 [].

runSite Source #

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