mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2025-01-16 10:05:56 +00:00
123 lines
4.3 KiB
JavaScript
123 lines
4.3 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Copyright 2012 Google Inc. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var axios_1 = __importDefault(require("axios"));
|
|
var options_1 = require("./options");
|
|
// tslint:disable-next-line no-var-requires
|
|
var pkg = require('../../package.json');
|
|
var PRODUCT_NAME = 'google-api-nodejs-client';
|
|
/**
|
|
* Axios will use XHR if it is available. In the case of Electron,
|
|
* since XHR is there it will try to use that. This leads to OPTIONS
|
|
* preflight requests which googleapis DOES NOT like. This line of
|
|
* code pins the adapter to ensure it uses node.
|
|
* https://github.com/google/google-api-nodejs-client/issues/1083
|
|
*/
|
|
axios_1.default.defaults.adapter = require('axios/lib/adapters/http');
|
|
var DefaultTransporter = /** @class */ (function () {
|
|
function DefaultTransporter() {
|
|
}
|
|
/**
|
|
* Configures request options before making a request.
|
|
* @param opts AxiosRequestConfig options.
|
|
* @return Configured options.
|
|
*/
|
|
DefaultTransporter.prototype.configure = function (opts) {
|
|
if (opts === void 0) { opts = {}; }
|
|
// set transporter user agent
|
|
opts.headers = opts.headers || {};
|
|
var uaValue = opts.headers['User-Agent'];
|
|
if (!uaValue) {
|
|
opts.headers['User-Agent'] = DefaultTransporter.USER_AGENT;
|
|
}
|
|
else if (!uaValue.includes(PRODUCT_NAME + "/")) {
|
|
opts.headers['User-Agent'] =
|
|
uaValue + " " + DefaultTransporter.USER_AGENT;
|
|
}
|
|
return opts;
|
|
};
|
|
DefaultTransporter.prototype.request = function (opts, callback) {
|
|
var _this = this;
|
|
// ensure the user isn't passing in request-style options
|
|
opts = this.configure(opts);
|
|
try {
|
|
options_1.validate(opts);
|
|
}
|
|
catch (e) {
|
|
if (callback) {
|
|
return callback(e);
|
|
}
|
|
else {
|
|
throw e;
|
|
}
|
|
}
|
|
if (callback) {
|
|
axios_1.default(opts)
|
|
.then(function (r) {
|
|
callback(null, r);
|
|
})
|
|
.catch(function (e) {
|
|
callback(_this.processError(e));
|
|
});
|
|
}
|
|
else {
|
|
return axios_1.default(opts).catch(function (e) {
|
|
throw _this.processError(e);
|
|
});
|
|
}
|
|
};
|
|
/**
|
|
* Changes the error to include details from the body.
|
|
*/
|
|
DefaultTransporter.prototype.processError = function (e) {
|
|
var res = e.response;
|
|
var err = e;
|
|
var body = res ? res.data : null;
|
|
if (res && body && body.error && res.status !== 200) {
|
|
if (typeof body.error === 'string') {
|
|
err.message = body.error;
|
|
err.code = res.status.toString();
|
|
}
|
|
else if (Array.isArray(body.error.errors)) {
|
|
err.message =
|
|
body.error.errors.map(function (err2) { return err2.message; }).join('\n');
|
|
err.code = body.error.code;
|
|
err.errors = body.error.errors;
|
|
}
|
|
else {
|
|
err.message = body.error.message;
|
|
err.code = body.error.code || res.status;
|
|
}
|
|
}
|
|
else if (res && res.status >= 400) {
|
|
// Consider all 4xx and 5xx responses errors.
|
|
err.message = body;
|
|
err.code = res.status.toString();
|
|
}
|
|
return err;
|
|
};
|
|
/**
|
|
* Default user agent.
|
|
*/
|
|
DefaultTransporter.USER_AGENT = PRODUCT_NAME + "/" + pkg.version;
|
|
return DefaultTransporter;
|
|
}());
|
|
exports.DefaultTransporter = DefaultTransporter;
|
|
//# sourceMappingURL=transporters.js.map
|