npm stats
  • Search
  • About
  • Repo
  • Sponsor
  • more
    • Search
    • About
    • Repo
    • Sponsor

Made by Antonio Ramirez

pull-http

1.0.2

@yoshuawuyts

npmHomeRepoSnykSocket
Downloads:1
$ npm install pull-http
DailyWeeklyMonthlyYearly

pull-http stability

npm version build status test coverage downloads js-standard-style

Http pull-stream functions. Useful for composing middleware in high throughput servers.

Usage

const serverRouter = require('server-router')
const summary = require('server-summary')
const browserify = require('browserify')
const pullHttp = require('./pull-http')
const logHttp = require('http-ndjson')
const pull = require('pull-stream')
const bankai = require('bankai')
const bole = require('bole')
const http = require('http')
const path = require('path')

const clientp = path.join(__dirname, 'client-main.js')
const log = bole('main')

createServer({ port: 1337, logLevel: 'debug' })

function createServer (argv) {
  bole.output({ level: argv.logLevel, stream: process.stdout })
  const router = createRouter()
  const server = http.createServer(function (req, res) {
    const setSize = logHttp(req, res, log.debug)
    const source = pullHttp.createSource(req, res)
    const through = router(req, res, setSize)
    const sink = pullHttp.createSink(req, res, setSize)
    pull(source, through, sink)
  })
  server.listen(argv.port, summary(server))
}

function createRouter () {
  const router = serverRouter('/404')
  router.on('/', pullHttp.intercept(bankai.html()))
  router.on('/bundle.css', pullHttp.intercept(bankai.css()))
  router.on('/bundle.js', pullHttp.intercept(bankai.js(browserify, clientp)))
  return router
}

API

pullHttp.createSource(req, res)

Create a new source stream from an HTTP request. Attempts to parse JSON if content type is application/json.

pullHttp.createSink(req, res)

Creates a new sink stream. Sends errors if an error is detected. Sends JSON if any data is passed. If no data is passed, it acts as a noop sink, expecting an earlier stream to handle res.end().

pullHttp.intercept(httpFn) -> routerFn(req, res, params, setSize)

Wrap a Node stream behind a router to send data, and handle its own res.end() call. [more docs tbi]

Installation

$ npm install pull-http

See Also

  • dominictarr/pull-stream
  • raynos/error
  • node/http

License

MIT