flinter
Version:
A wrapper around the InterFAX REST API for sending and receiving faxes.
74 lines (57 loc) • 6.72 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 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 result = isImage ? [] : '';
var isLocation = response.headers['location'] !== undefined;
response.on('data', function (chunk) {
if (isImage) {
result.push(chunk);
} else {
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 (isJson && result.length > 0) {
result = JSON.parse(result);
} else if (isJson && result.length == 0) {
result = null;
} else if (isImage) {
var data = Buffer.concat(result);
result = new _image2.default(data, response.headers['content-type']);
}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNwb25zZS1oYW5kbGVyLmpzIl0sIm5hbWVzIjpbIlJlc3BvbnNlSGFuZGxlciIsImVtaXR0ZXIiLCJkZWJ1ZyIsInJlc3BvbnNlIiwiY29uc29sZSIsImxvZyIsImlzSnNvbiIsImhlYWRlcnMiLCJpc1RpZmYiLCJpc1BkZiIsImlzSW1hZ2UiLCJyZXN1bHQiLCJpc0xvY2F0aW9uIiwidW5kZWZpbmVkIiwib24iLCJjaHVuayIsInB1c2giLCJMb2NhdGlvbiIsImxlbmd0aCIsIkpTT04iLCJwYXJzZSIsImRhdGEiLCJCdWZmZXIiLCJjb25jYXQiLCJJbWFnZSIsInN0YXR1c0NvZGUiLCJlbWl0IiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7Ozs7O0lBRU1BLGUsR0FDSix5QkFBWUMsT0FBWixFQUFxQkMsS0FBckIsRUFBNEI7QUFBQTs7QUFDMUIsU0FBTyxVQUFDQyxRQUFELEVBQWM7QUFDbkIsUUFBSUQsS0FBSixFQUFXO0FBQUVFLGNBQVFDLEdBQVIsQ0FBWUYsUUFBWjtBQUF3QixLQURsQixDQUNtQjs7QUFFdEMsUUFBSUcsU0FBY0gsU0FBU0ksT0FBVCxDQUFpQixjQUFqQixLQUFvQyxXQUF0RDtBQUNBLFFBQUlDLFNBQWNMLFNBQVNJLE9BQVQsQ0FBaUIsY0FBakIsS0FBb0MsWUFBdEQ7QUFDQSxRQUFJRSxRQUFjTixTQUFTSSxPQUFULENBQWlCLGNBQWpCLEtBQW9DLGlCQUF0RDtBQUNBLFFBQUlHLFVBQWNGLFVBQVVDLEtBQTVCO0FBQ0EsUUFBSUUsU0FBY0QsVUFBVSxFQUFWLEdBQWUsRUFBakM7O0FBRUEsUUFBSUUsYUFBY1QsU0FBU0ksT0FBVCxDQUFpQixVQUFqQixNQUFpQ00sU0FBbkQ7O0FBRUFWLGFBQVNXLEVBQVQsQ0FBWSxNQUFaLEVBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsVUFBSUwsT0FBSixFQUFhO0FBQ1hDLGVBQU9LLElBQVAsQ0FBWUQsS0FBWjtBQUNELE9BRkQsTUFFTztBQUNMSixrQkFBVUksS0FBVjtBQUNEO0FBQ0YsS0FORDs7QUFRQVosYUFBU1csRUFBVCxDQUFZLEtBQVosRUFBbUIsWUFBVztBQUM1QixVQUFJWixLQUFKLEVBQVc7QUFBRUUsZ0JBQVFDLEdBQVIsQ0FBWU0sTUFBWjtBQUFzQixPQURQLENBQ1E7O0FBRXBDLFVBQUlDLFVBQUosRUFBZ0I7QUFBRUQsaUJBQVMsSUFBSU0sa0JBQUosQ0FBYWQsU0FBU0ksT0FBVCxDQUFpQixVQUFqQixDQUFiLENBQVQ7QUFBc0QsT0FBeEUsTUFDSyxJQUFJRCxVQUFVSyxPQUFPTyxNQUFQLEdBQWdCLENBQTlCLEVBQWlDO0FBQUVQLGlCQUFTUSxLQUFLQyxLQUFMLENBQVdULE1BQVgsQ0FBVDtBQUE4QixPQUFqRSxNQUNBLElBQUlMLFVBQVVLLE9BQU9PLE1BQVAsSUFBaUIsQ0FBL0IsRUFBa0M7QUFBRVAsaUJBQVMsSUFBVDtBQUFnQixPQUFwRCxNQUNBLElBQUlELE9BQUosRUFBYTtBQUNoQixZQUFNVyxPQUFPQyxPQUFPQyxNQUFQLENBQWNaLE1BQWQsQ0FBYjtBQUNBQSxpQkFBUyxJQUFJYSxlQUFKLENBQVVILElBQVYsRUFBZ0JsQixTQUFTSSxPQUFULENBQWlCLGNBQWpCLENBQWhCLENBQVQ7QUFDRDs7QUFFRCxVQUFJSixTQUFTc0IsVUFBVCxJQUF1QixHQUEzQixFQUFnQztBQUM5QnhCLGdCQUFReUIsSUFBUixDQUFhLFFBQWIsRUFBdUJmLE1BQXZCO0FBQ0QsT0FGRCxNQUVPO0FBQ0xWLGdCQUFReUIsSUFBUixDQUFhLFNBQWIsRUFBd0JmLE1BQXhCO0FBQ0Q7QUFDRixLQWhCRDs7QUFrQkFSLGFBQVNXLEVBQVQsQ0FBWSxPQUFaLEVBQXFCLFVBQVNhLEtBQVQsRUFBZ0I7QUFDbkMxQixjQUFReUIsSUFBUixDQUFhLFFBQWIsRUFBdUJDLEtBQXZCO0FBQ0QsS0FGRDtBQUdELEdBeENEO0FBeUNELEM7O2tCQUdZM0IsZSIsImZpbGUiOiJyZXNwb25zZS1oYW5kbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEltYWdlICAgIGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IExvY2F0aW9uIGZyb20gJy4vbG9jYXRpb24nO1xuXG5jbGFzcyBSZXNwb25zZUhhbmRsZXIge1xuICBjb25zdHJ1Y3RvcihlbWl0dGVyLCBkZWJ1Zykge1xuICAgIHJldHVybiAocmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChkZWJ1ZykgeyBjb25zb2xlLmxvZyhyZXNwb25zZSk7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGxldCBpc0pzb24gICAgICA9IHJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09ICd0ZXh0L2pzb24nO1xuICAgICAgbGV0IGlzVGlmZiAgICAgID0gcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT0gJ2ltYWdlL3RpZmYnO1xuICAgICAgbGV0IGlzUGRmICAgICAgID0gcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT0gJ2FwcGxpY2F0aW9uL3BkZic7XG4gICAgICBsZXQgaXNJbWFnZSAgICAgPSBpc1RpZmYgfHwgaXNQZGY7XG4gICAgICBsZXQgcmVzdWx0ICAgICAgPSBpc0ltYWdlID8gW10gOiAnJztcblxuICAgICAgbGV0IGlzTG9jYXRpb24gID0gcmVzcG9uc2UuaGVhZGVyc1snbG9jYXRpb24nXSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgICByZXNwb25zZS5vbignZGF0YScsIGZ1bmN0aW9uKGNodW5rKSB7XG4gICAgICAgIGlmIChpc0ltYWdlKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goY2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSBjaHVuaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJlc3BvbnNlLm9uKCdlbmQnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKGRlYnVnKSB7IGNvbnNvbGUubG9nKHJlc3VsdCk7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cbiAgICAgICAgaWYgKGlzTG9jYXRpb24pIHsgcmVzdWx0ID0gbmV3IExvY2F0aW9uKHJlc3BvbnNlLmhlYWRlcnNbJ2xvY2F0aW9uJ10pOyB9XG4gICAgICAgIGVsc2UgaWYgKGlzSnNvbiAmJiByZXN1bHQubGVuZ3RoID4gMCkgeyByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3VsdCk7IH1cbiAgICAgICAgZWxzZSBpZiAoaXNKc29uICYmIHJlc3VsdC5sZW5ndGggPT0gMCkgeyByZXN1bHQgPSBudWxsOyB9XG4gICAgICAgIGVsc2UgaWYgKGlzSW1hZ2UpIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gQnVmZmVyLmNvbmNhdChyZXN1bHQpO1xuICAgICAgICAgIHJlc3VsdCA9IG5ldyBJbWFnZShkYXRhLCByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA+PSAzMDApIHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQoJ3JlamVjdCcsIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW1pdHRlci5lbWl0KCdyZXNvbHZlJywgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJlc3BvbnNlLm9uKCdjbG9zZScsIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgIGVtaXR0ZXIuZW1pdCgncmVqZWN0JywgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZXNwb25zZUhhbmRsZXI7XG4iXX0=