@bonniernews/bn-google-ad-manager-api
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

This repo is a fork of https://github.com/thewizarodofoz/google-ad-manager-api to update dependencies, functionality and add typing for the different gam services.

We have tried to keep the overall structure intact, but we moved the authorization to its own step for readability reasons. Checkout Step #2 for the change and Step #3 for code removal.

BN Google Ad Manager Node Api

A modern wrapper around Google's Ad Manager API.

Features

  • Promise based - use Promise or async/await
  • Non opinionated about auth mechanisms - obtain a token however you like
  • Typed (TypeScript-isch)

Install

npm i @BonnierNews/bn-google-ad-manager-api

Usage

Step #1

Obtain an access token in whatever way you like, for example using Google Auth Library's JSON Web Tokens mechanism:

const { auth } = require("google-auth-library");

const keys = {
  type: "service_account",
  project_id: "...",
  private_key_id: "...",
  private_key: "...",
  client_email: "...",
  client_id: "...",
  auth_uri: "https://accounts.google.com/o/oauth2/auth",
  token_uri: "https://oauth2.googleapis.com/token",
  auth_provider_x509_cert_url: "https://www.googleapis.com/oauth2/v1/certs",
  client_x509_cert_url: "...",
};

const client = auth.fromJSON(keys);
client.scopes = ["https://www.googleapis.com/auth/dfp"];
await client.authorize();

Step #2:

Create a client and authorize it with the google auth credentials token from step #1:

import { DFPClient, GAMClient } from "@BonnierNews/bn-google-ad-manager-api";

// To maintain backwards compatability we keep the DFP client intact with the option to use our own client.
// Both have the same functions

const dfpClient = new DFPClient();
await dfpClient.authorize({ networkCode: "...", apiVersion: "v201805", accessToken: client.credentials.access_token });

// or with gamClient
const gamClient = new GAMClient();
await gamClient.authorize({ networkCode: "...", apiVersion: "v201805", accessToken: client.credentials.access_token });

Step #3

Use the client to create a service.

const lineItemService = await dfpClient.getService("LineItemService");

// or

const lineItemService = await gamClient.getService("LineItemService");

Step #4

Invoke service methods:

const res = await lineItemService.getLineItemsByStatement({
  filterStatement: {
    query: "WHERE name LIKE 'prebid%'",
  },
});

console.log(res.results[0].id);

Notes

  • The Ad Manager API returns an rval field for each method invocation. To make things easier for us, this package will return the content of that field. For example, invocation of LineItemService.getLineItemsByStatement will return a LineItemPage object directly.
  • Google auth tokens have expiration dates and they need to be updated or refreshed in some way. Because authentication management is outside the scope of this package, make sure to always pass the new tokens to the services instances using service.setToken.

Readme

Keywords

Package Sidebar

Install

npm i @bonniernews/bn-google-ad-manager-api

Weekly Downloads

82

Version

1.0.2

License

ISC

Unpacked Size

11.4 kB

Total Files

11

Last publish

Collaborators

  • daghall
  • andreas.samuelsson
  • norla
  • mattiasobn
  • chrissode
  • jzachrisson
  • hilleso
  • adam.hakansson
  • amundsentb
  • jonaek
  • drgeobn
  • mikael.mattsson
  • morre
  • takolander
  • vitryssen
  • herbola
  • nifo
  • johark
  • aliceboberg
  • varneynz
  • gusliden
  • mxtr
  • karlbergc
  • martindanielson
  • joelekman
  • chavah
  • matsrorbecker
  • axeljohanssonbonniernews
  • markusn
  • linuss
  • joelabrahamsson
  • jonaswalden
  • indeedshouts
  • marcusgronblad