Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
shrutiburman committed Oct 31, 2023
1 parent 146bfee commit 01aa761
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/main/java/com/sendgrid/BaseInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ public abstract class BaseInterface implements SendGridAPI {
private static final String USER_AGENT = "sendgrid/" + VERSION + ";java";
private static final int RATE_LIMIT_RESPONSE_CODE = 429;
private static final int THREAD_POOL_SIZE = 8;
private static final Map<String, String> allowedRegionsHostMap = Map.of(
"eu", "api.eu.sendgrid.com",
"global", "api.sendgrid.com"
);

private ExecutorService pool;

Expand Down Expand Up @@ -336,4 +340,22 @@ public void run() {
}
});
}

/*
* Client libraries contain setters for specifying region/edge.
* This allows support global and eu regions only. This set will likely expand in the future.
* Global should be the default
* Global region means the message should be sent through:
* HTTP: api.sendgrid.com
* EU region means the message should be sent through:
* HTTP: api.eu.sendgrid.com
*/
public void setDataResidency(String region){
if (allowedRegionsHostMap.containsKey(region)){
this.host = allowedRegionsHostMap.get(region);
}
else{
throw new IllegalArgumentException("region can only be \"eu\" or \"global\"");
}
}
}
46 changes: 46 additions & 0 deletions src/test/java/com/sendgrid/SendGridTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3242,4 +3242,50 @@ public void test_request_headers_override_sendgrid_object_headers() throws IOExc
sg.api(request);
verify(client).api(argThat((Request req) -> req.getHeaders().get("set-on-both").equals("456")));
}

@Test
public void testSetResidency_happy_path_eu() {
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
sg.setDataResidency("eu");
Assert.assertEquals(sg.getHost(), "api.eu.sendgrid.com");
}
@Test
public void testSetResidency_happy_path_global() {
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
sg.setDataResidency("global");
Assert.assertEquals(sg.getHost(), "api.eu.sendgrid.com");
}


@Test
public void testSetResidency_override_host() {
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
sg.setHost("api.new.com");
sg.setDataResidency("eu");
Assert.assertEquals(sg.getHost(), "api.eu.sendgrid.com");
}

@Test
public void testsetResidency_override_data_residency() {
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
sg.setDataResidency("eu");
sg.setHost("api.new.com");
Assert.assertEquals(sg.getHost(), "api.new.com");
}

@Test (expected = IllegalArgumentException.class)
public void testsetResidency_incorrect_region() {
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
sg.setDataResidency("foo");
}
@Test (expected = IllegalArgumentException.class)
public void testsetResidency_null_region(){
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
sg.setDataResidency("");
}
@Test
public void testsetResidency_default_region() {
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
Assert.assertEquals(sg.getHost(), "api.sendgrid.com");
}
}

0 comments on commit 01aa761

Please sign in to comment.