UNPKG

dc-management-sdk-js

Version:
64 lines 4.68 kB
import { HttpMethod } from '../../http/HttpRequest'; import { combineURLs } from '../../utils/URL'; /** * @hidden */ export class Oauth2AuthHeaderProvider { constructor(clientCredentials, options, httpClient) { this.safelyExpireOffsetSeconds = 30; options = { authUrl: 'https://auth.amplience.net', ...options }; this.authUrl = options.authUrl; this.clientCredentials = clientCredentials; this.httpClient = httpClient; } /** * Requests an authentication token that can be used * to make requests to the Dynamic Content api. * Tokens are reused until they expire. * * @returns {Promise<AccessToken>} */ async getToken() { if (this.inFlight != null) { return this.inFlight; } if (this.token != null && this.tokenExpires - this.safelyExpireOffsetSeconds * 1000 > Date.now()) { return this.token; } const payload = 'grant_type=client_credentials' + '&client_id=' + encodeURIComponent(this.clientCredentials.client_id) + '&client_secret=' + encodeURIComponent(this.clientCredentials.client_secret); const request = this.httpClient.request({ data: payload, headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, method: HttpMethod.POST, url: combineURLs(this.authUrl, '/oauth/token'), }); this.inFlight = request.then((response) => { if (typeof response.data !== 'object') { throw new Error('Unexpected response format from /oauth/token endpoint'); } this.token = response.data; this.tokenExpires = Date.now() + this.token.expires_in * 1000; this.inFlight = null; return this.token; }); return this.inFlight; } /** * Returns an authorization header that can be used to make * requests to the Dynamic Content api. * * @returns {Promise<string>} */ async getAuthHeader() { const token = await this.getToken(); return `bearer ${token.access_token}`; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2F1dGgyQXV0aEhlYWRlclByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9vYXV0aDIvc2VydmljZXMvT2F1dGgyQXV0aEhlYWRlclByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJOUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBV25DLFlBQ0UsaUJBQXNELEVBQ3RELE9BQXVELEVBQ3ZELFVBQXNCO1FBWFAsOEJBQXlCLEdBQUcsRUFBRSxDQUFDO1FBYTlDLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRWhFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxRQUFRO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQ0UsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQ3RFLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUNYLCtCQUErQjtZQUMvQixhQUFhO1lBQ2Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztZQUNwRCxpQkFBaUI7WUFDakIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3RDLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxtQ0FBbUM7YUFDcEQ7WUFDRCxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDdkIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQWUsRUFBRTtZQUNyRCxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FDYix1REFBdUQsQ0FDeEQsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFXLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDLENBQXlCLENBQUM7UUFFM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXBDLE9BQU8sVUFBVSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGIn0=