braintree-web
Version:
A suite of tools for integrating Braintree in the browser
30 lines (24 loc) • 785 B
JavaScript
;
var ajaxIsAvaliable;
var once = require("../../lib/once");
var JSONPDriver = require("./jsonp-driver");
var AJAXDriver = require("./ajax-driver");
var getUserAgent = require("./get-user-agent");
var isHTTP = require("./is-http");
function isAjaxAvailable() {
if (ajaxIsAvaliable == null) {
ajaxIsAvaliable = !(isHTTP() && /MSIE\s(8|9)/.test(getUserAgent()));
}
return ajaxIsAvaliable;
}
module.exports = function (options, cb) {
cb = once(cb || Function.prototype);
options.method = (options.method || "GET").toUpperCase();
options.timeout = options.timeout == null ? 60000 : options.timeout;
options.data = options.data || {};
if (isAjaxAvailable()) {
AJAXDriver.request(options, cb);
} else {
JSONPDriver.request(options, cb);
}
};