diff --git a/packages/client/src/classes/client.js b/packages/client/src/classes/client.js index 8db6f3805..74bb23446 100644 --- a/packages/client/src/classes/client.js +++ b/packages/client/src/classes/client.js @@ -18,6 +18,7 @@ const TWILIO_BASE_URL = 'https://email.twilio.com/'; class Client { constructor() { this.auth = ''; + this.impersonateSubuser = ''; this.defaultHeaders = { Accept: 'application/json', @@ -65,6 +66,10 @@ class Client { return typeof value === 'string' || value instanceof String; } + setImpersonateSubuser(subuser) { + this.impersonateSubuser = subuser; + } + setDefaultHeader(key, value) { this.defaultHeaders[key] = value; return this; @@ -84,6 +89,10 @@ class Client { headers.Authorization = this.auth; } + if (this.impersonateSubuser) { + headers['On-Behalf-Of'] = this.impersonateSubuser; + } + return headers; } diff --git a/packages/client/src/client.d.ts b/packages/client/src/client.d.ts index 2bfca2641..c721bf01f 100644 --- a/packages/client/src/client.d.ts +++ b/packages/client/src/client.d.ts @@ -15,6 +15,11 @@ declare class Client { */ setTwilioEmailAuth(username: string, password: string): void; + /** + * Set client requests to impersonate a subuser + */ + setImpersonateSubuser(subuser: string): void; + /** * Set default header */ diff --git a/packages/client/src/client.spec.js b/packages/client/src/client.spec.js index db2eee34f..dbf0421e1 100644 --- a/packages/client/src/client.spec.js +++ b/packages/client/src/client.spec.js @@ -76,6 +76,16 @@ describe('client', () => { }); }); +describe('setImpersonateSubuser', () => { + const impersonateSubuser = 'abcxyz@this.is.a.test.subuser'; + const sgClient = require('./client'); + sgClient.setImpersonateSubuser(impersonateSubuser); + + it('should set the imperonate subuser header', () => { + expect(sgClient.impersonateSubuser).to.equal(impersonateSubuser); + }); +}); + describe('test_access_settings_activity_get', () => { const request = {}; request.qs = {