| 'use strict'; |
| |
| const Readable = require('stream').Readable; |
| const lowercaseKeys = require('lowercase-keys'); |
| |
| class Response extends Readable { |
| constructor(statusCode, headers, body, url) { |
| if (typeof statusCode !== 'number') { |
| throw new TypeError('Argument `statusCode` should be a number'); |
| } |
| if (typeof headers !== 'object') { |
| throw new TypeError('Argument `headers` should be an object'); |
| } |
| if (!(body instanceof Buffer)) { |
| throw new TypeError('Argument `body` should be a buffer'); |
| } |
| if (typeof url !== 'string') { |
| throw new TypeError('Argument `url` should be a string'); |
| } |
| |
| super(); |
| this.statusCode = statusCode; |
| this.headers = lowercaseKeys(headers); |
| this.body = body; |
| this.url = url; |
| } |
| |
| _read() { |
| this.push(this.body); |
| this.push(null); |
| } |
| } |
| |
| module.exports = Response; |