packages feed

wai-route-0.1.0: sample/Main.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Network.HTTP.Types
import Network.Wai
import Network.Wai.Handler.Warp
import Network.Wai.Route (route)

import qualified Data.ByteString.Lazy as L

main :: IO ()
main = run 4242 $
    route [ ("/foo", fooHandler)
          , ("/foo/bar", barHandler)
          , ("/foo/:bar/:baz", bazHandler)
          ]
  where
    fooHandler _ _  = return $ responseLBS status200 [] "foo!"
    barHandler _ _  = return $ responseLBS status200 [] "bar!"
    bazHandler p rq = do
        print $ "pathInfo: " ++ show (pathInfo rq)
        print $ "captured: " ++ show p
        return $ responseLBS status200 []
               $ maybe L.empty L.fromStrict (lookup "baz" p)