{"dist":{"shasum":"3082e58cf65ba629eb6982a0108b4f4348bf83e5","tarball":"https://registry.npmjs.org/http-raw/-/http-raw-0.2.0.tgz","integrity":"sha512-k0GToDj44AZQ02LAFrE6sX2Q/SjO2A9B+cj0ceLOIoKwFPcTSe8dMywzl0vFhSZBV3/Z7KoPeBIo8osZVhlmSA==","signatures":[{"sig":"MEQCIBLEaRyhlcYvavgC4u3Fp0/ivd4DTE59X3HKtLSfxPk4AiARTwj6gOTl6taRHPVB67748ZyzLjhjKrt9oSpouIgl4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","name":"http-raw","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 bs = req.createRawBodyStream();\n        bs.write('HTTP/1.1 200 OK\\r\\n\\r\\n');\n        bs.pipe(upper()).pipe(bs)\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 that 2 extra functions are available on the `req` objects from 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 s = req.createRawStream()\n\nReturn a readable/writable stream `s`. `s` will emit all the raw data from the\nconnection, including the buffered header data without doing any parsing on the\ndata beforehand.\n\nWriting to `s` goes through to the underlying network socket without any\nadditional framing applied.\n\nTo get all the data, `req.createRawStream()` must be fired on the same tick as\nthe response callback.\n\nOn the same tick as the response handler, `s.buffers` will have all all the\nbuffer slices formatted as an array where each element is an array:\n\n``` js\n[ buffer, start, end ]\n```\n\nOn the next tick `s.buffers` gets set to undefined to it can be garbage\ncollected.\n\n## var s = req.createRawBodyStream()\n\nReturn a readable/writable stream `s`. `s` will emit the raw data from after the\nheaders have been parsed, including any framing without doing any parsing.\n\nWriting to `s` goes through to the underlying network socket without any\nadditional framing applied.\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.1.59","description":"expose the raw request data in an http server","directories":{"test":"test","example":"example"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"dependencies":{},"devDependencies":{"tap":"~0.3.0","request":"~2.12.0","through":"~2.1.0"},"_id":"http-raw@0.2.0","version":"0.2.0"}