Skip to content

Commit fa601b1

Browse files
Merge pull request #495 from Rohit-T/404-impersonate-subuser
Fix #404 Add ability to impersonate subusers
2 parents 182fdd1 + ba77a01 commit fa601b1

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

src/main/java/com/sendgrid/SendGrid.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public class SendGrid implements SendGridAPI {
4141
/** The number of milliseconds to sleep between retries. */
4242
private int rateLimitSleep;
4343

44+
/** The subuser to be impersonated. */
45+
private String subuser;
46+
4447
/**
4548
* Construct a new SendGrid API wrapper.
4649
* @param apiKey is your SendGrid API Key: https://app.sendgrid.com/settings/api_keys
@@ -193,6 +196,31 @@ public void setRateLimitSleep(int rateLimitSleep) {
193196
this.rateLimitSleep = rateLimitSleep;
194197
}
195198

199+
/**
200+
* Impersonate subuser for subsequent requests
201+
* @param subuser the subuser to be impersonated
202+
*/
203+
public void addImpersonateSubuser(String subuser) {
204+
this.subuser = subuser;
205+
this.addRequestHeader("on-behalf-of", subuser);
206+
}
207+
208+
/**
209+
* Stop Impersonating the subuser
210+
*/
211+
public void removeImpersonateSubuser() {
212+
this.subuser = null;
213+
this.removeRequestHeader("on-behalf-of");
214+
}
215+
216+
/**
217+
* Get the impersonated subuser or null if empty
218+
* @return the impersonated subuser
219+
*/
220+
public String getImpersonateSubuser() {
221+
return this.subuser;
222+
}
223+
196224
/**
197225
* Makes the call to the SendGrid API, override this method for testing.
198226
* @param request the request to make.

src/test/java/com/sendgrid/SendGridTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3406,4 +3406,33 @@ public void test_whitelabel_links__link_id__subuser_post() throws IOException {
34063406
Assert.assertEquals(200, response.getStatusCode());
34073407
}
34083408

3409+
@Test
3410+
public void test_add_impersonate_subuser() {
3411+
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
3412+
3413+
sg.addImpersonateSubuser("subusername");
3414+
Assert.assertEquals(sg.getRequestHeaders().get("on-behalf-of"), "subusername");
3415+
}
3416+
3417+
@Test
3418+
public void test_remove_impersonate_subuser() {
3419+
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
3420+
3421+
sg.addImpersonateSubuser("subusername");
3422+
Assert.assertEquals(sg.getRequestHeaders().get("on-behalf-of"), "subusername");
3423+
3424+
sg.removeImpersonateSubuser();
3425+
Assert.assertEquals(sg.getRequestHeaders().get("on-behalf-of"), null);
3426+
}
3427+
3428+
@Test
3429+
public void test_get_impersonate_subuser() {
3430+
SendGrid sg = new SendGrid(SENDGRID_API_KEY);
3431+
3432+
sg.addImpersonateSubuser("subusername");
3433+
Assert.assertEquals(sg.getImpersonateSubuser(), "subusername");
3434+
3435+
sg.removeImpersonateSubuser();
3436+
Assert.assertEquals(sg.getImpersonateSubuser(), null);
3437+
}
34093438
}

0 commit comments

Comments
 (0)