interfax-kevin
Version:
A wrapper around the InterFAX REST API for sending and receiving faxes.
69 lines (52 loc) • 6.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _image = require('./image');
var _image2 = _interopRequireDefault(_image);
var _location = require('./location');
var _location2 = _interopRequireDefault(_location);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var ResponseHandler = function ResponseHandler(emitter, debug) {
_classCallCheck(this, ResponseHandler);
return function (response) {
if (debug) {
console.log(response);
} // eslint-disable-line no-console
var result = '';
var isJson = response.headers['content-type'] == 'text/json';
var isTiff = response.headers['content-type'] == 'image/tiff';
var isPdf = response.headers['content-type'] == 'application/pdf';
var isImage = isTiff || isPdf;
var isLocation = response.headers['location'] !== undefined;
response.on('data', function (chunk) {
result += chunk;
});
response.on('end', function () {
if (debug) {
console.log(result);
} // eslint-disable-line no-console
if (isLocation) {
result = new _location2.default(response.headers['location']);
} else if (isImage) {
result = new _image2.default(result, response.headers['content-type']);
} else if (isJson && result.length > 0) {
result = JSON.parse(result);
} else if (isJson && result.length == 0) {
result = null;
}
if (response.statusCode >= 300) {
emitter.emit('reject', result);
} else {
emitter.emit('resolve', result);
}
});
response.on('close', function (error) {
emitter.emit('reject', error);
});
};
};
exports.default = ResponseHandler;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNwb25zZS1oYW5kbGVyLmpzIl0sIm5hbWVzIjpbIlJlc3BvbnNlSGFuZGxlciIsImVtaXR0ZXIiLCJkZWJ1ZyIsInJlc3BvbnNlIiwiY29uc29sZSIsImxvZyIsInJlc3VsdCIsImlzSnNvbiIsImhlYWRlcnMiLCJpc1RpZmYiLCJpc1BkZiIsImlzSW1hZ2UiLCJpc0xvY2F0aW9uIiwidW5kZWZpbmVkIiwib24iLCJjaHVuayIsImxlbmd0aCIsIkpTT04iLCJwYXJzZSIsInN0YXR1c0NvZGUiLCJlbWl0IiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7Ozs7O0lBRU1BLGUsR0FDSix5QkFBWUMsT0FBWixFQUFxQkMsS0FBckIsRUFBNEI7QUFBQTs7QUFDMUIsU0FBTyxVQUFDQyxRQUFELEVBQWM7QUFDbkIsUUFBSUQsS0FBSixFQUFXO0FBQUVFLGNBQVFDLEdBQVIsQ0FBWUYsUUFBWjtBQUF3QixLQURsQixDQUNtQjs7QUFFdEMsUUFBSUcsU0FBUyxFQUFiO0FBQ0EsUUFBSUMsU0FBY0osU0FBU0ssT0FBVCxDQUFpQixjQUFqQixLQUFvQyxXQUF0RDtBQUNBLFFBQUlDLFNBQWNOLFNBQVNLLE9BQVQsQ0FBaUIsY0FBakIsS0FBb0MsWUFBdEQ7QUFDQSxRQUFJRSxRQUFjUCxTQUFTSyxPQUFULENBQWlCLGNBQWpCLEtBQW9DLGlCQUF0RDtBQUNBLFFBQUlHLFVBQWNGLFVBQVVDLEtBQTVCOztBQUVBLFFBQUlFLGFBQWNULFNBQVNLLE9BQVQsQ0FBaUIsVUFBakIsTUFBaUNLLFNBQW5EOztBQUVBVixhQUFTVyxFQUFULENBQVksTUFBWixFQUFvQixVQUFTQyxLQUFULEVBQWdCO0FBQ2xDVCxnQkFBVVMsS0FBVjtBQUNELEtBRkQ7O0FBSUFaLGFBQVNXLEVBQVQsQ0FBWSxLQUFaLEVBQW1CLFlBQVc7QUFDNUIsVUFBSVosS0FBSixFQUFXO0FBQUVFLGdCQUFRQyxHQUFSLENBQVlDLE1BQVo7QUFBc0IsT0FEUCxDQUNROztBQUVwQyxVQUFJTSxVQUFKLEVBQWdCO0FBQUVOLGlCQUFTLHVCQUFhSCxTQUFTSyxPQUFULENBQWlCLFVBQWpCLENBQWIsQ0FBVDtBQUFzRCxPQUF4RSxNQUNLLElBQUlHLE9BQUosRUFBYTtBQUFFTCxpQkFBUyxvQkFBVUEsTUFBVixFQUFrQkgsU0FBU0ssT0FBVCxDQUFpQixjQUFqQixDQUFsQixDQUFUO0FBQStELE9BQTlFLE1BQ0EsSUFBSUQsVUFBVUQsT0FBT1UsTUFBUCxHQUFnQixDQUE5QixFQUFpQztBQUFFVixpQkFBU1csS0FBS0MsS0FBTCxDQUFXWixNQUFYLENBQVQ7QUFBOEIsT0FBakUsTUFDQSxJQUFJQyxVQUFVRCxPQUFPVSxNQUFQLElBQWlCLENBQS9CLEVBQWtDO0FBQUVWLGlCQUFTLElBQVQ7QUFBZ0I7O0FBRXpELFVBQUlILFNBQVNnQixVQUFULElBQXVCLEdBQTNCLEVBQWdDO0FBQzlCbEIsZ0JBQVFtQixJQUFSLENBQWEsUUFBYixFQUF1QmQsTUFBdkI7QUFDRCxPQUZELE1BRU87QUFDTEwsZ0JBQVFtQixJQUFSLENBQWEsU0FBYixFQUF3QmQsTUFBeEI7QUFDRDtBQUNGLEtBYkQ7O0FBZUFILGFBQVNXLEVBQVQsQ0FBWSxPQUFaLEVBQXFCLFVBQVNPLEtBQVQsRUFBZ0I7QUFDbkNwQixjQUFRbUIsSUFBUixDQUFhLFFBQWIsRUFBdUJDLEtBQXZCO0FBQ0QsS0FGRDtBQUdELEdBakNEO0FBa0NELEM7O2tCQUdZckIsZSIsImZpbGUiOiJyZXNwb25zZS1oYW5kbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEltYWdlICAgIGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IExvY2F0aW9uIGZyb20gJy4vbG9jYXRpb24nO1xuXG5jbGFzcyBSZXNwb25zZUhhbmRsZXIge1xuICBjb25zdHJ1Y3RvcihlbWl0dGVyLCBkZWJ1Zykge1xuICAgIHJldHVybiAocmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChkZWJ1ZykgeyBjb25zb2xlLmxvZyhyZXNwb25zZSk7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgIGxldCBpc0pzb24gICAgICA9IHJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09ICd0ZXh0L2pzb24nO1xuICAgICAgbGV0IGlzVGlmZiAgICAgID0gcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT0gJ2ltYWdlL3RpZmYnO1xuICAgICAgbGV0IGlzUGRmICAgICAgID0gcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT0gJ2FwcGxpY2F0aW9uL3BkZic7XG4gICAgICBsZXQgaXNJbWFnZSAgICAgPSBpc1RpZmYgfHwgaXNQZGY7XG5cbiAgICAgIGxldCBpc0xvY2F0aW9uICA9IHJlc3BvbnNlLmhlYWRlcnNbJ2xvY2F0aW9uJ10gIT09IHVuZGVmaW5lZDtcblxuICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykge1xuICAgICAgICByZXN1bHQgKz0gY2h1bms7XG4gICAgICB9KTtcblxuICAgICAgcmVzcG9uc2Uub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoZGVidWcpIHsgY29uc29sZS5sb2cocmVzdWx0KTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcblxuICAgICAgICBpZiAoaXNMb2NhdGlvbikgeyByZXN1bHQgPSBuZXcgTG9jYXRpb24ocmVzcG9uc2UuaGVhZGVyc1snbG9jYXRpb24nXSk7IH1cbiAgICAgICAgZWxzZSBpZiAoaXNJbWFnZSkgeyByZXN1bHQgPSBuZXcgSW1hZ2UocmVzdWx0LCByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSk7IH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTsgfVxuICAgICAgICBlbHNlIGlmIChpc0pzb24gJiYgcmVzdWx0Lmxlbmd0aCA9PSAwKSB7IHJlc3VsdCA9IG51bGw7IH1cblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA+PSAzMDApIHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQoJ3JlamVjdCcsIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW1pdHRlci5lbWl0KCdyZXNvbHZlJywgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJlc3BvbnNlLm9uKCdjbG9zZScsIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgIGVtaXR0ZXIuZW1pdCgncmVqZWN0JywgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZXNwb25zZUhhbmRsZXI7XG4iXX0=