Code Monkey home page Code Monkey logo

dram's Introduction

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

dram's People

Contributors

apaleslimghost avatar

Stargazers

David Trejo avatar Olivia Haas avatar  avatar

Watchers

James Cloos avatar

dram's Issues

Chaining

Using the library from Javascript is slightly painful without a |> pipe operator. We should add a chaining API. Need to subclass Stream, have methods attach themselves to the prototype and the exports (with the args in a sensible order).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.