restistream

0.0.5 • Public • Published

Reststream

Reststream uses sbar-inject to inject the function params.

The injeted params are:

  • $dup http-duplex
  • $body JSONStream decoded
  • $auth A function that excepts a function that returns a boolean if is a autherized request.
  • All url params with {around} them
  • All querystring parameters

Create server

var http = require('http'),
	server = http.createServer(),
	rest = require('reststream');

rest.create(http.createServer(), {baseUrl: 'localhost:8989'});
rest.listen(8080);

Supported HTTP methods:

  • GET
    • rest.get(urlToMatch, callback)
  • POST
    • rest.post(urlToMatch, callback)
  • PUT
    • rest.put(urlToMatch, callback)
  • DELETE
    • rest.del(urlToMatch, callback)
  • PATCH
    • rest.patch(urlToMatch, callback)
  • OPTIONS
    • rest.opts(urlToMatch, callback)
  • HEAD (Does not have a response body! Only sends headers!)
    • rest.head(urlToMatch, callback)

All data from the client is in the $dup parameter. And a JSON parsed version of the request body is in the $body parameter.

All routes must be unique!

Create a REST method

rest.post('/api/{foo}/{bar}', function ($dup, foo, $body, bar) {
    var db = someDbMethodThatReturnsAStream(bar, baz);
	$body.pipe(db).pipe($dup);
});

Authenticate

All calls to $auth must be made before any data is sent to $dup.

Not authenticated

rest.get('/api/user/{id}', function ($dup, $body, id, $auth, qsParam, baz) {
    //Accepts any function that returns a boolean that says if the current
    // request is authenticated
    $auth(function () {
        //Not authenticated
		return false;
	});

    $dup.write(id + '|');
    $dup.write(qsParam + '|');
    $dup.write(baz + '|');
    
    $dup.end();
});

request.get('http://localhost:8080/api/user/1?qsParam=1&baz=false, function (error, response, body) {
    response.statusCode; //401
    body; //'Unauthorized'
});

Authenticated

rest.get('/api/user/{id}', function ($dup, $body, id, $auth, qsParam, baz) {
    //Accepts any function that returns a boolean that says if the current
    // request is authenticated
    $auth(function () {
        //Is authenticated
		return true;
	});

    $dup.write(id + '|');
    $dup.write(qsParam + '|');
    $dup.write(baz + '|');
    
    $dup.end();
});

request.get('http://localhost:8080/api/user/1?qsParam=55&baz=false, function (error, response, body) {
    response.statusCode; //200
    body; //'1|55|false'
});

Readme

Keywords

none

Package Sidebar

Install

npm i restistream

Weekly Downloads

0

Version

0.0.5

License

MIT

Last publish

Collaborators

  • mattiasfestin