Spaces:
Sleeping
Sleeping
| /* | |
| * http-stream.js: Idomatic buffered stream which pipes additional HTTP information. | |
| * | |
| * (C) 2011, Charlie Robbins & the Contributors | |
| * MIT LICENSE | |
| * | |
| */ | |
| var url = require('url'), | |
| util = require('util'), | |
| qs = require('qs'), | |
| HttpStream = require('./http-stream'); | |
| var RequestStream = module.exports = function (options) { | |
| options = options || {}; | |
| HttpStream.call(this, options); | |
| this.on('pipe', this.pipeRequest); | |
| this.request = options.request; | |
| }; | |
| util.inherits(RequestStream, HttpStream); | |
| // | |
| // ### function pipeRequest (source) | |
| // #### @source {ServerRequest|HttpStream} Source stream piping to this instance | |
| // Pipes additional HTTP request metadata from the `source` HTTP stream (either concrete or | |
| // abstract) to this instance. e.g. url, headers, query, etc. | |
| // | |
| // Remark: Is there anything else we wish to pipe? | |
| // | |
| RequestStream.prototype.pipeRequest = function (source) { | |
| this.url = this.originalUrl = source.url; | |
| this.method = source.method; | |
| this.httpVersion = source.httpVersion; | |
| this.httpVersionMajor = source.httpVersionMajor; | |
| this.httpVersionMinor = source.httpVersionMinor; | |
| this.setEncoding = source.setEncoding; | |
| this.connection = source.connection; | |
| this.socket = source.socket; | |
| if (source.query) { | |
| this.query = source.query; | |
| } | |
| else { | |
| this.query = ~source.url.indexOf('?') | |
| ? qs.parse(url.parse(source.url).query) | |
| : {}; | |
| } | |
| }; | |
| // http.serverRequest methods | |
| ['setEncoding'].forEach(function (method) { | |
| RequestStream.prototype[method] = function () { | |
| return this.request[method].apply(this.request, arguments); | |
| }; | |
| }); | |