Import couch_dbupdates from rcouch.
authorJan Lehnardt <jan@apache.org>
Mon, 4 Mar 2013 11:02:24 +0000 (12:02 +0100)
committerJan Lehnardt <jan@apache.org>
Mon, 22 Jul 2013 10:28:51 +0000 (12:28 +0200)
commitdea80e1a97788bd665bf4c81522e0f9f096c1496
treedd60852cfaf0ed4bd57f13bfc986ebde2ed0bf21
Import couch_dbupdates from rcouch.

This creates a new top level API endpoint: `/_db_updates`
that returns a line of JSON for each database event along
with the database name.

A database event is one of `created`, `updated`, `deleted`.

The API endpoint supports a `?feed=` parameter with the
options: `longpoll`, `continuous` and `eventsource`.

A second parameter `timeout=` specifies when the server should
close the connection.

`longpoll` closes the connection after a single notification.
It is the default option.

`continuous` keeps a socket open until the specified `timeout`
or 60 seconds by default.

`heartbeat` decides whether to send a newline character on
`timeout` to avoid clients closing the connection prematurely.

`eventsource` works like continuous, but sends the data in
EventSource format. See http://dev.w3.org/html5/eventsource/

The parameters are modelled after the existing `/_changes` API
endpoint. Note that `/_db_updates` does not support resuming
of notifications via a sequence ID.

This is a port of the existing DbUpdateNotification interface
to the HTTP API.

Functional changes compared to rcouch:

 - make _db_updates an admin-only resource

Docs:

 - updated api/misc to include basic info on `/_db_updates`

License:

  Apache 2 license, updated LICENSE.

Notice:

  (c) 2012 Benoit Chesneau, updated NOTICE.

Tests:

 - only manual testing of the various API differences due to
   complications with asynchronous HTTP requests in the JS
   test suite and total annoyance of overly complicated
   ibrowse/httpc modules for writing etap tests.

Recommendation to ship this as EXPERIMENTAL until we have tests.
LICENSE [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
NOTICE [new file with mode: 0644]
README.md [new file with mode: 0644]
src/couch_dbupdates.app.src [new file with mode: 0644]
src/couch_dbupdates.erl [new file with mode: 0644]
src/couch_dbupdates_httpd.erl [new file with mode: 0644]