dram

Expressively create Oban HTTP responses

Usage no npm install needed!

<script type="module">
  import dram from 'https://cdn.skypack.dev/dram';
</script>

README

Dram Build Status

Expressive response generators for Oban. Inspired by Play! Framework's Results class.

npm install dram

Example

var handle = require('oban');
var resp   = require('dram');
var http   = require('http');

http.createServer(handle(function(req) {
    return resp.ok('hello world').withHeader('X-Powered-By', 'Oban');
})).listen(8000);
$ telnet localhost 8000
GET /
HTTP/1.1 200 OK
...snip...
X-Powered-By: Oban

hello world

API

simple :: Body → Result

Wraps any body-like object (String, Buffer, Array of String or Buffer, Stream of String or Buffer) in Result, so it can be chained.

with-status :: StatusCode → Result → Result

Adds the HTTP status to the Result. Can be called as a chained method on Results. Partially applied as:

ok ≡ with-status 200
not-found ≡ with-status 404
error ≡ with-status 500

with-header :: Name → Value → Result → Result

Adds the HTTP header to the result. Can be called as a chained method on Results.

redirect :: StatusCode → URI → Result → Result

Sets 3XX status and Location header. Partially applied as:

moved-permanently ≡ redirect 301
found ≡ redirect 302
see-other ≡ redirect 303
temporary-redirect ≡ redirect 307
permanent-redirect ≡ redirect 308

type :: ContentType → Result → Result

Shorthand for with-header 'content-type'.

json, html, text

Shorthand for type 'application/json', type 'text/html' and type 'text/plain' respectively.

with-cookie :: Name → Value → CookieOptions → Request → Request

Serialises a cookie value using cookie, and does with-header 'set-cookie' with it. For information on the possible options, see cookie's documentation.

with-session-cookie :: Name → Value → Request → Request

Set a cookie with no expiry (or other options).

Licence

MIT