The wai-routes package

[Tags:library, mit]

This package provides typesafe URLs for Wai applications.


[Skip to Readme]

Properties

Versions 0.1, 0.2, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.4.0, 0.4.1, 0.5.0, 0.5.1, 0.6.0, 0.6.1, 0.6.2, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.8.0, 0.8.1, 0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8
Dependencies base (>=3 && <5), http-types, path-pieces, template-haskell, text, wai [details]
License GPL
Author Anupam Jain
Maintainer ajnsit@gmail.com
Stability Experimental
Category Network
Home page https://github.com/ajnsit/wai-routes
Source repository head: git clone http://github.com/ajnsit/wai-routes
this: git clone http://github.com/ajnsit/wai-routes/tree/v0.1(tag v0.1)
Uploaded Fri Jan 13 14:36:01 UTC 2012 by AnupamJain
Distributions LTSHaskell:0.9.8, NixOS:0.9.8
Downloads 3517 total (74 in the last 30 days)
Votes
1 []
Status Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for wai-routes

Readme for wai-routes-0.1

Wai Routes (wai-routes-0.1)
============================

This package provides typesafe URLs for Wai applications.

Much of the TH functionality has been lifted from Yesod dispatching code. The aim is to provide a similar level of typesafe URL functionality to Wai applications as is available to Yesod applications.


Example Usage
=============

The following builds a simple JSON service (using Aeson for JSON conversion)


    -- A useful type synonym
    type UserId = Text

    -- Define the JSON instance
    data User = User { name::Text, uid:: UserId } deriving (Show, Read, Eq)
    instance ToJSON User where
      toJSON x = object [ "name" .= (name x), "uid" .= (uid x) ]

    -- Define the handlers
    getUserR :: UserId -> Application
    getUserR uid _req =
      return $ responseLBS statusOK headers json
      where user = User { name = "Anon Amos", uid = uid }
            json = encode user
            headers = [("Content-Type", "application/json")]

    getUsersR :: Application
    getUsersR _req =
      return $ responseLBS statusOK headers json
      where userids = (["anon","john","jane"]::[Text])
            json = encode userids
            headers = [("Content-Type", "application/json")]

    -- Generate the routing datatype and the Route instance
    -- The type generated will be named "UserRoute"
    mkRoute "User" [parseRoutes|
      /users UsersR GET
      /user/#UserId UserR GET
    |]

    -- Now you can use dispatch function (passing it your route datatype)
    main :: IO ()
    main = run 8080 $ dispatch (undefined::UserRoute) $ staticApp defaultFileServerSettings


Changelog
=========

0.1 : Intial release