From 91b4cb6fb08cb37beac843cf4533a2a9f22b8a4c Mon Sep 17 00:00:00 2001 From: sburman Date: Fri, 17 Nov 2023 16:46:48 +0530 Subject: [PATCH] init --- packages/client/src/classes/client.js | 13 +++++++++++++ packages/client/src/client.spec.js | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/client/src/classes/client.js b/packages/client/src/classes/client.js index c91768d4d..8d756df3a 100644 --- a/packages/client/src/classes/client.js +++ b/packages/client/src/classes/client.js @@ -15,6 +15,11 @@ const API_KEY_PREFIX = 'SG.'; const SENDGRID_BASE_URL = 'https://api.sendgrid.com/'; const TWILIO_BASE_URL = 'https://email.twilio.com/'; +// Initialize the allowed regions and their corresponding hosts +const REGION_HOST_MAP = { + eu: 'api.eu.sendgrid.com', + global: 'api.sendgrid.com', +}; class Client { constructor() { this.auth = ''; @@ -94,6 +99,14 @@ class Client { return this; } + setDataResidency(region) { + if (!REGION_HOST_MAP.hasOwnProperty(region)) { + console.warn('Region can only be "global" or "eu".'); + } else { + this.setDefaultRequest('baseUrl', REGION_HOST_MAP[region]); + } + } + createHeaders(data) { // Merge data with default headers. const headers = mergeData(this.defaultHeaders, data); diff --git a/packages/client/src/client.spec.js b/packages/client/src/client.spec.js index 65e0e5997..536515615 100644 --- a/packages/client/src/client.spec.js +++ b/packages/client/src/client.spec.js @@ -1,5 +1,6 @@ 'use strict'; const nock = require('nock'); +const sgClient = require('./client'); const testRequest = (request, statusCode) => { const sgClient = require('./client'); @@ -3091,3 +3092,12 @@ describe('test_whitelabel_links__link_id__subuser_post', () => { return testRequest(request, 200); }); }); + +describe('setDataResidency', () => { + const sgClient = require('./client'); + sgClient.setDataResidency('eu'); + + it('should have host as eu', () => { + expect(sgClient.baseUrl).to.equal('api.eu.sendgrid.com'); + }); +});