google-ads-node
Version:
Google Ads gRPC Client Library for Node
74 lines • 5.93 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const grpc_1 = __importDefault(require("grpc"));
const auth_1 = __importDefault(require("./auth"));
const interceptor_1 = require("./interceptor");
const services = __importStar(require("./services"));
const DEFAULT_VERSION = "v0";
const GOOGLE_ADS_ENDPOINT = "googleads.googleapis.com:443";
class GoogleAdsClient {
constructor(options) {
this.validateOptions(options);
if (this.usingToken(options)) {
this.options = options;
}
else {
/* Access token has not been provided */
this.options = options;
this.auth = new auth_1.default({
clientId: this.options.client_id,
clientSecret: this.options.client_secret,
refreshToken: this.options.refresh_token,
});
}
}
getService(serviceName) {
const serviceClientName = `${serviceName}Client`;
if (!services.hasOwnProperty(serviceClientName)) {
throw new Error(`Specified service "${serviceName}" does not exist in Google Ads API ${DEFAULT_VERSION}.`);
}
const metadataInterceptor = new interceptor_1.MetadataInterceptor(this.options.developer_token, this.options.login_customer_id, this.options.access_token, this.auth);
const exceptionInterceptor = new interceptor_1.ExceptionInterceptor();
const serviceClientConstructor = services[serviceClientName];
const service = new serviceClientConstructor(GOOGLE_ADS_ENDPOINT, grpc_1.default.credentials.createSsl(), {
interceptors: [
(options, nextCall) => metadataInterceptor.intercept(options, nextCall),
(options, nextCall) => exceptionInterceptor.intercept(options, nextCall),
],
});
return service;
}
validateOptions(options) {
if (!options) {
throw new Error(`Client expects initialisation options`);
}
if (!options.developer_token) {
throw new Error(`Missing required key "developer_token" in options`);
}
if (this.usingToken(options) && !options.access_token) {
throw new Error(`Missing required keys in options, expected "access_token", "developer_token"`);
}
if (!this.usingToken(options)) {
if (!options.client_id ||
!options.client_secret ||
!options.refresh_token) {
throw new Error(`Missing required keys in options, expected "client_id", "client_secret", "client_secret"`);
}
}
}
usingToken(options) {
return "access_token" in options;
}
}
exports.GoogleAdsClient = GoogleAdsClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBRXhCLGtEQUEwQjtBQUMxQiwrQ0FBMEU7QUFDMUUscURBQXVDO0FBRXZDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztBQUM3QixNQUFNLG1CQUFtQixHQUFHLDhCQUE4QixDQUFDO0FBaUIzRCxNQUFhLGVBQWU7SUFJMUIsWUFBWSxPQUFzRDtRQUNoRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQWlDLENBQUM7U0FDbEQ7YUFBTTtZQUNMLHdDQUF3QztZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQStCLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQztnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtnQkFDeEMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTthQUN6QyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxVQUFVLENBQUMsV0FBbUI7UUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLFdBQVcsUUFBUSxDQUFDO1FBRWpELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixzQkFBc0IsV0FBVyxzQ0FBc0MsZUFBZSxHQUFHLENBQzFGLENBQUM7U0FDSDtRQUVELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxpQ0FBbUIsQ0FDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQzdCLElBQUksQ0FBQyxPQUFrQyxDQUFDLFlBQVksRUFDckQsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1FBQ0YsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGtDQUFvQixFQUFFLENBQUM7UUFFeEQsTUFBTSx3QkFBd0IsR0FBSSxRQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEUsTUFBTSxPQUFPLEdBQUcsSUFBSSx3QkFBd0IsQ0FDMUMsbUJBQW1CLEVBQ25CLGNBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQzVCO1lBQ0UsWUFBWSxFQUFFO2dCQUNaLENBQ0UsT0FBeUIsRUFDekIsUUFBcUUsRUFDckUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO2dCQUNyRCxDQUNFLE9BQXlCLEVBQ3pCLFFBQXFFLEVBQ3JFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQzthQUN2RDtTQUNGLENBQ0YsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBc0Q7UUFDNUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztTQUN0RTtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLE9BQWtDLENBQUMsWUFBWSxFQUFFO1lBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQ2IsOEVBQThFLENBQy9FLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdCLElBQ0UsQ0FBRSxPQUFnQyxDQUFDLFNBQVM7Z0JBQzVDLENBQUUsT0FBZ0MsQ0FBQyxhQUFhO2dCQUNoRCxDQUFFLE9BQWdDLENBQUMsYUFBYSxFQUNoRDtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLDBGQUEwRixDQUMzRixDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsT0FBc0Q7UUFDdkUsT0FBTyxjQUFjLElBQUksT0FBTyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQXpGRCwwQ0F5RkMifQ==