{"dist":{"shasum":"1b41702f4077cd6e4b0fc167d607e9aa0942dd10","tarball":"https://registry.npmjs.org/http-raw/-/http-raw-2.0.0.tgz","integrity":"sha512-sI+gIGWgoaGK0bE4aml3nuRS1+QoGGNdIS3rpiwr0QO1CevO1CL7qdbysxC+cCpEPkn6kt8n/GyNWyambjAt7g==","signatures":[{"sig":"MEUCIQCpFNqfjJa3JjdtKB3dkBLWmmDVKI5J1Cf7hRdrfymzmAIgI9K7AAbg4SZFwTYhtD3y4K3DdTgWVeF46aeegs4AV80=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","name":"http-raw","_from":".","author":{"url":"http://substack.net","name":"James Halliday","email":"mail@substack.net"},"readme":"# http-raw\n\nexpose the raw request data in an http server\n\n[![build status](https://secure.travis-ci.org/substack/http-raw.png)](http://travis-ci.org/substack/http-raw)\n\n# example\n\n``` js\nvar createServer = require('http-raw');\nvar through = require('through');\n\nvar server = createServer(function (req, res) {\n    if (req.method === 'GET') {\n        res.end('beep boop\\n');\n    }\n    else {\n        var rs = req.createRawBodyStream();\n        var ws = res.createRawStream();\n        \n        ws.write('HTTP/1.1 200 OK\\r\\n\\r\\n');\n        rs.pipe(upper()).pipe(ws)\n    }\n});\nserver.listen(7000);\n\nfunction upper () {\n    return through(function (buf) {\n        this.emit('data', String(buf).toUpperCase());\n    });\n}\n```\n\n```\n$ node example/server.js &\n$ nc localhost 7000\nPUT / HTTP/1.1\nHost: robots\n\nHTTP/1.1 200 OK\n\n\nbeep \nBEEP\nboop\nBOOP\n```\n\n# methods\n\n``` js\nvar httpRaw = require('http-raw')\n```\n\nThe http-raw api is exactly like the `http.createServer(cb)` api from core,\nexcept for the extra functions documented below that get attached to the `req`\nand `res` objects in the\n[`'request'`](http://nodejs.org/docs/latest/api/http.html#http_event_request)\nand\n[`'upgrade'`](http://nodejs.org/docs/latest/api/http.html#http_event_upgrade)\nevents.\n\n## var server = httpRaw(cb)\n\nCreate a new http server with extended raw stream functions.\n\n## var server = httpRaw.https(options, cb)\n\nCreate a new https server with extended raw stream functions.\n\n## var rs = req.createRawStream()\n\nReturn a readable stream `rs`. `rs` will emit all the raw data from the\nconnection, including the buffered header data without doing any parsing on the\ndata beforehand.\n\nTo get all the data, `req.createRawStream()` must be fired on the same tick as\nthe response callback.\n\n## var ws = res.createRawStream()\n\nReturn a writable stream `ws` that will be written directly to the underlying\nnetwork socket without any additional framing added.\n\n## var bs = req.createRawBodyStream()\n\nReturn a readable stream `bs` like the stream returned by\n`req.createRawStream()`, but only emit the raw body data, not the headers.\n\nTo get all the data, `req.createRawBodyStream()` must be fired on the same tick\nas the response callback.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install http-raw\n```\n\n# license\n\nMIT\n","license":"MIT","scripts":{"test":"tap test/*.js"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"homepage":"https://github.com/substack/http-raw","keywords":["http","raw","server","proxy"],"repository":{"url":"git://github.com/substack/http-raw.git","type":"git"},"_npmVersion":"1.2.2","description":"expose the raw request data in an http server","directories":{"test":"test","example":"example"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"dependencies":{},"readmeFilename":"readme.markdown","devDependencies":{"tap":"~0.3.0","request":"~2.12.0","through":"~2.1.0"},"_id":"http-raw@2.0.0","version":"2.0.0"}