The wai-routes package

[Tags: library, mit]

This package provides typesafe URLs for Wai applications.


[Skip to ReadMe]

Properties

Versions0.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
Change logNone available
Dependenciesbase (>=3 && <5), http-types, path-pieces, template-haskell, text, wai [details]
LicenseGPL
AuthorAnupam Jain
Maintainerajnsit@gmail.com
StabilityExperimental
CategoryNetwork
Home pagehttps://github.com/ajnsit/wai-routes
Source repositoryhead: git clone http://github.com/ajnsit/wai-routes
this: git clone http://github.com/ajnsit/wai-routes/tree/v0.1(tag v0.1)
UploadedFri Jan 13 14:36:01 UTC 2012 by AnupamJain
DistributionsLTSHaskell:0.9.6, NixOS:0.9.6, Stackage:0.9.6
Downloads3120 total (126 in last 30 days)
Votes
1 []
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

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