html2canvas
Version:
Screenshots with JavaScript
65 lines (55 loc) • 2.49 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Proxy = undefined;
var _Feature = require('./Feature');
var _Feature2 = _interopRequireDefault(_Feature);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Proxy = exports.Proxy = function Proxy(src, options) {
if (!options.proxy) {
return Promise.reject(process.env.NODE_ENV !== 'production' ? 'No proxy defined' : null);
}
var proxy = options.proxy;
return new Promise(function (resolve, reject) {
var responseType = _Feature2.default.SUPPORT_CORS_XHR && _Feature2.default.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';
var xhr = _Feature2.default.SUPPORT_CORS_XHR ? new XMLHttpRequest() : new XDomainRequest();
xhr.onload = function () {
if (xhr instanceof XMLHttpRequest) {
if (xhr.status === 200) {
if (responseType === 'text') {
resolve(xhr.response);
} else {
var reader = new FileReader();
// $FlowFixMe
reader.addEventListener('load', function () {
return resolve(reader.result);
}, false);
// $FlowFixMe
reader.addEventListener('error', function (e) {
return reject(e);
}, false);
reader.readAsDataURL(xhr.response);
}
} else {
reject(process.env.NODE_ENV !== 'production' ? 'Failed to proxy resource ' + src.substring(0, 256) + ' with status code ' + xhr.status : '');
}
} else {
resolve(xhr.responseText);
}
};
xhr.onerror = reject;
xhr.open('GET', proxy + '?url=' + encodeURIComponent(src) + '&responseType=' + responseType);
if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
xhr.responseType = responseType;
}
if (options.imageTimeout) {
var timeout = options.imageTimeout;
xhr.timeout = timeout;
xhr.ontimeout = function () {
return reject(process.env.NODE_ENV !== 'production' ? 'Timed out (' + timeout + 'ms) proxying ' + src.substring(0, 256) : '');
};
}
xhr.send();
});
};
;