Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-auth-library / build / src / transporters.js
diff --git a/legacy-libs/google-auth-library/build/src/transporters.js b/legacy-libs/google-auth-library/build/src/transporters.js
new file mode 100644 (file)
index 0000000..a77c1c4
--- /dev/null
@@ -0,0 +1,108 @@
+"use strict";
+/**
+ * Copyright 2019 Google LLC. 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.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const gaxios_1 = require("gaxios");
+const isbrowser_1 = require("./isbrowser");
+const options_1 = require("./options");
+// tslint:disable-next-line no-var-requires
+const pkg = require('../../package.json');
+const PRODUCT_NAME = 'google-api-nodejs-client';
+class DefaultTransporter {
+    /**
+     * Configures request options before making a request.
+     * @param opts GaxiosOptions options.
+     * @return Configured options.
+     */
+    configure(opts = {}) {
+        opts.headers = opts.headers || {};
+        if (!isbrowser_1.isBrowser()) {
+            // set transporter user agent if not in browser
+            const 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;
+    }
+    request(opts, callback) {
+        // 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) {
+            gaxios_1.request(opts).then(r => {
+                callback(null, r);
+            }, e => {
+                callback(this.processError(e));
+            });
+        }
+        else {
+            return gaxios_1.request(opts).catch(e => {
+                throw this.processError(e);
+            });
+        }
+    }
+    /**
+     * Changes the error to include details from the body.
+     */
+    processError(e) {
+        const res = e.response;
+        const err = e;
+        const 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((err2) => 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}`;
+exports.DefaultTransporter = DefaultTransporter;
+//# sourceMappingURL=transporters.js.map
\ No newline at end of file