dispatch

Path-based dispatching for client- and server-side applications.
README

ocaml-dispatch provides a basic mechanism for dispatching a request to a
handler based on hierarchical path names conventionally found in URIs. It can be
used both for dispatching requests in a server, as well as handing changes to
hierarchical fragments in a client-side application.

Installation

Install the library and its depenencies via OPAM:

opam install dispatch

Development

To install development versions of the library, pin the package from the root
of the repository:

opam pin add .

You can install the latest changes by commiting them to the local git
repository and running:

opam upgrade dispatch

For building and running the tests during development, you will need to install
the oUnit package and reconfigure the build process to enable tests:

opam install oUnit
./configure --enable-tests
make && make test

Usage

Dispatch is designed to work with whatever sort of handler you care to use,
whether it's synchronous, Lwt-based, or Async-based. Here's a simple example of
using the Dispatch.DSL module to setup routing for a "Hello, World!" server.
The example assumes a Server module and request type, and that handlers
should return strings that will be interpreted as the body of the response.

open Dispatch

let hello_handler keys rest request =
  let who = try List.assoc "who" keys with Not_found -> "World" in
  Printf.sprintf "Hello, %s!" who
;;

let handler request =
  let table = [
      "/"           , hello_handler
    ; "/hello/:who/", hello_handler
  ] in
  match DSL.dispatch table request.path with
  | Result.Ok handler -> handler request
  | Result.Error _    -> "Not found!"
;;

let _ =
  Server.start handler

License

BSD3, see LICENSE file for its text.

Install
Sources
0.4.0.tar.gz
md5=b41da081833337c86c4eda7a2e0b8d26
Dependencies
jbuilder
>= "1.0+beta10"
ounit
with-test & >= "1.0.2"
Reverse Dependencies
webmachine
>= "0.2.3" & < "0.7.0"