nero-0.1: Lens-based HTTP toolkit

Safe HaskellSafe-Inferred
LanguageHaskell2010

Nero.Application

Synopsis

Documentation

slashRedirect Source

Arguments

:: Target a 
=> Matcher a 
-> (a -> Response)

What to respond upon matching.

-> Request 
-> Maybe Response 

Redirect with slash appended URL if only a trailing slash is needed for successful matching, otherwise it responds normally.

>>> let mkRequest p = dummyRequest & host .~ "example.com" & path .~ p
>>> let matcher = match $ "/hello/" <> text <> "/"
>>> let respond name = ok $ "<h1>Hello " <> name <> "</h1>"
>>> let app = slashRedirect matcher respond
>>> app (mkRequest "/hello/there") <&> status
Just "301 Moved Permanently"
>>> app (mkRequest "/hello/there") >>= preview location
Just "http://example.com/hello/there/"
>>> app (mkRequest "/hello/there/") <&> status
Just "200 OK"
>>> app (mkRequest "/hello/there/") <&> body
Just "<h1>Hello there</h1>"
>>> app $ mkRequest "/bye/"
Nothing