Files
old-slucajna-televizija/backend/node_modules/googleapis/lib/googleapis.js
GotPPay a75ea978f9 ..
2017-10-16 20:21:19 +02:00

180 lines
5.4 KiB
JavaScript

"use strict";
// Copyright 2012-2016, Google, Inc.
// 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.
const path = require("path");
const fs = require("fs");
const util = require("util");
const discovery_1 = require("./discovery");
const discovery = new discovery_1.default({ debug: false, includePrivate: false });
/**
* Load the apis from apis index file
* This file holds all version information
* @private
*/
const apis = {};
/**
* Return a Function that requires an API from the disk
* @param {String} filename Filename of API
* @return {function} function used to require the API from disk
* @private
*/
function requireAPI(filename) {
return function (options) {
const type = typeof options;
let version;
if (type === 'string') {
version = options;
options = {};
}
else if (type === 'object') {
version = options.version;
delete options.version;
}
else {
throw new Error('Argument error: Accepts only string or object');
}
try {
const endpointPath = path.join(__dirname, filename, path.basename(version));
const Endpoint = require(endpointPath);
const ep = new Endpoint(options);
ep.google = this; // for drive.google.transporter
return Object.freeze(ep); // create new & freeze
}
catch (e) {
throw new Error(util.format('Unable to load endpoint %s("%s"): %s', filename, version, e.message));
}
};
}
// Dynamically discover available APIs
fs.readdirSync(path.join(__dirname, '../apis')).forEach(function (file) {
apis[file] = requireAPI('../apis/' + file);
});
/**
* @class GoogleAuth
*/
const GoogleAuth = require('google-auth-library');
/**
* GoogleApis constructor.
*
* @example
* const GoogleApis = require('googleapis').GoogleApis;
* const google = new GoogleApis();
*
* @class GoogleApis
* @param {Object} [options] Configuration options.
*/
function GoogleApis(options) {
this.options(options);
this.addAPIs(apis);
/**
* A reference to an instance of GoogleAuth.
*
* @name GoogleApis#auth
* @type {GoogleAuth}
*/
this.auth = new GoogleAuth();
/**
* A reference to the {@link GoogleApis} constructor function.
*
* @name GoogleApis#GoogleApis
* @see GoogleApis
* @type {Function}
*/
this.GoogleApis = GoogleApis;
}
/**
* Set options.
*
* @param {Object} [options] Configuration options.
*/
GoogleApis.prototype.options = function (options) {
this._options = options || {};
};
/**
* Add APIs endpoints to googleapis object
* E.g. googleapis.drive and googleapis.datastore
*
* @name GoogleApis#addAPIs
* @method
* @param {Object} apis Apis to be added to this GoogleApis instance.
* @private
*/
GoogleApis.prototype.addAPIs = function (apis) {
for (const apiName in apis) {
this[apiName] = apis[apiName].bind(this);
}
};
/**
* Dynamically generate an apis object that can provide Endpoint objects for the
* discovered APIs.
*
* @example
* const google = require('googleapis');
* const discoveryUrl = 'https://myapp.appspot.com/_ah/api/discovery/v1/apis/';
* google.discover(discoveryUrl, function (err) {
* const someapi = google.someapi('v1');
* });
*
* @name GoogleApis#discover
* @method
* @param {string} url Url to the discovery service for a set of APIs. e.g.,
* https://www.googleapis.com/discovery/v1/apis
* @param {Function} callback Callback function.
*/
GoogleApis.prototype.discover = function (url, callback) {
const self = this;
discovery.discoverAllAPIs(url, function (err, apis) {
if (err) {
return callback(err);
}
self.addAPIs(apis);
callback();
});
};
/**
* Dynamically generate an Endpoint object from a discovery doc.
*
* @example
* const google = require('google');
* const discoveryDocUrl = 'https://myapp.appspot.com/_ah/api/discovery/v1/apis/someapi/v1/rest';
* google.discoverApi(discoveryDocUrl, function (err, someapi) {
* // use someapi
* });
*
* @name GoogleApis#discoverAPI
* @method
* @param {string} path Url or file path to discover doc for a single API.
* @param {object} [options] Options to configure the Endpoint object generated
* from the discovery doc.
* @param {Function} callback Callback function.
*/
GoogleApis.prototype.discoverAPI = function (path, options, callback) {
const self = this;
if (typeof options === 'function') {
callback = options;
options = {};
}
if (!options) {
options = {};
}
discovery.discoverAPI(path, function (err, Endpoint) {
if (err) {
return callback(err);
}
const ep = new Endpoint(options);
ep.google = self; // for drive.google.transporter
return callback(null, Object.freeze(ep)); // create new & freeze
});
};
module.exports = new GoogleApis();
//# sourceMappingURL=googleapis.js.map