3.0.0 • Published 7 years ago

http-fantasy-land v3.0.0

Weekly downloads
31
License
MIT
Repository
github
Last release
7 years ago

WIP http-fantasy-land

Build Status eh?

A web server library that allows you to create your server using functional concepts.

Getting Started

npm install --save http-fantasy-land
import {listen, get} from 'http-fantasy-land';

const home = (response, request) => ({
  ...response,
  statusCode: 200,
  body: 'It works!',
});

const router = composeRoutes(
  get('/', home),
);

listen(router, {port: 8080}).then(stop => {
  console.log('Listening @ http://localhost:8080');
});

API

route functions

A route is a function that, given a request object and a response object, returns a new response (or a promise that resolves to one).

TODO: elaborate

request

The request object is serialized, immutable representation of an http.IncomingMessage object.

{
  method: String,
  url: String,
  headers: {
    [key: String]: String,
  },
}

response

The response object is a serialized, immutable representation of an http.ServerResponse object.

{
  status: Number,
  body: String|Stream,
  headers: {
    [key: String]: String,
  },
}

listen

listen :: ((Object, Object) -> Object, Object) -> Promise<() -> void>

Description: Creates and starts a http/https server using the supplied route and options. Returns a promise that resolves to a stop() function.

Server Configuration Options. Accepts port, hostname, and backlog from http.listen, as well as any option accepted by https.createServer

See the links above for detailed descriptions of each option.

</dd>

Return Value: Function - A function that stops the server.

listen(route, {port: 8080}).then(stop => {
  console.log('Listening @ http://localhost:8080');
  setTimeout(() => {
    stop();
    console.log('Server stopped!');
  }, 500);
});

composeRoutes(...routes) => route

sendFile(file) => route

setHeader(name)(value) => route

get('/path', route) => route

head('/path', route) => route

post('/path', route) => route

put('/path', route) => route

del('/path', route) => route

connect('/path', route) => route

options('/path', route) => route

trace('/path', route) => route

patch('/path', route) => route

Compatibility

TODO: document usage w/ express/connect/etc.

3.0.0

7 years ago

2.2.0

7 years ago

2.1.0

7 years ago

2.0.0

7 years ago

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago