Skip to content

Commit 5f3f968

Browse files
committed
Merge branch 'next-gen' of https://github.com/twilio/twilio-java into next-gen
2 parents c0a3e62 + 780b56c commit 5f3f968

File tree

5 files changed

+118
-3
lines changed

5 files changed

+118
-3
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<artifactId>twilio</artifactId>
88
<packaging>jar</packaging>
99
<name>twilio</name>
10-
<version>7.0.0-rc-23-SNAPSHOT</version>
10+
<version>7.0.0-rc-25-SNAPSHOT</version>
1111
<description>Release Candidate for Next-Gen Twilio Java Helper Library</description>
1212
<url>https://www.twilio.com</url>
1313
<licenses>

src/main/java/com/twilio/Twilio.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
public class Twilio {
1414

15-
public static final String VERSION = "7.0.0-rc-22";
15+
public static final String VERSION = "7.0.0-rc-24";
1616
public static final String JAVA_VERSION = System.getProperty("java.version");
1717

1818
private static String username;

src/main/java/com/twilio/jwt/accesstoken/ConversationsGrant.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
public class ConversationsGrant implements Grant {
1414

15-
public String configurationProfileSid;
15+
private String configurationProfileSid;
1616

1717
public String getConfigurationProfileSid() {
1818
return configurationProfileSid;
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.twilio.jwt.accesstoken;
2+
3+
import com.google.common.base.Strings;
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
/**
9+
* Grant used to access Twilio Conversations.
10+
*
11+
* <p>
12+
* For more information see:
13+
* <a href="https://www.twilio.com/docs/api/rest/access-tokens">
14+
* https://www.twilio.com/docs/api/rest/access-tokens
15+
* </a>
16+
* </p>
17+
*/
18+
public class VoiceGrant implements Grant {
19+
20+
private String outgoingApplicationSid;
21+
private Map<String, Object> outgoingApplicationParams;
22+
private String pushCredentialSid;
23+
private String endpointId;
24+
25+
public VoiceGrant setOutgoingApplicationSid(String outgoingApplicationSid) {
26+
this.outgoingApplicationSid = outgoingApplicationSid;
27+
return this;
28+
}
29+
30+
public VoiceGrant setOutgoingApplication(
31+
String outgoingApplicationSid,
32+
Map<String, Object> outgoingApplicationParams
33+
) {
34+
this.outgoingApplicationSid = outgoingApplicationSid;
35+
this.outgoingApplicationParams = outgoingApplicationParams;
36+
return this;
37+
}
38+
39+
public VoiceGrant setPushCredentialSid(String pushCredentialSid) {
40+
this.pushCredentialSid = pushCredentialSid;
41+
return this;
42+
}
43+
44+
public VoiceGrant setEndpointId(String endpointId) {
45+
this.endpointId = endpointId;
46+
return this;
47+
}
48+
49+
@Override
50+
public String getGrantKey() {
51+
return "voice";
52+
}
53+
54+
@Override
55+
public Object getPayload() {
56+
return new Payload(this);
57+
}
58+
59+
@SuppressWarnings("checkstyle:membername")
60+
public class Payload {
61+
public Map<String, Object> outgoing;
62+
public String push_credential_sid;
63+
public String endpoint_id;
64+
65+
public Payload(VoiceGrant grant) {
66+
if (!Strings.isNullOrEmpty(grant.outgoingApplicationSid)) {
67+
this.outgoing = new HashMap<>();
68+
this.outgoing.put("application_sid", grant.outgoingApplicationSid);
69+
70+
if (grant.outgoingApplicationParams != null) {
71+
this.outgoing.put("params", grant.outgoingApplicationParams);
72+
}
73+
}
74+
75+
if (!Strings.isNullOrEmpty(grant.pushCredentialSid)) {
76+
this.push_credential_sid = grant.pushCredentialSid;
77+
}
78+
79+
if (!Strings.isNullOrEmpty(grant.endpointId)) {
80+
this.endpoint_id = grant.endpointId;
81+
}
82+
}
83+
}
84+
85+
}

src/test/java/com/twilio/jwt/accesstoken/AccessTokenTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.Test;
88

99
import java.util.Date;
10+
import java.util.HashMap;
1011
import java.util.Map;
1112

1213
/**
@@ -181,4 +182,33 @@ public void testCompleteToken() {
181182
Assert.assertEquals("CP123", cGrant.get("configuration_profile_sid"));
182183
}
183184

185+
@Test
186+
public void testVoiceToken() {
187+
Map<String, Object> params = new HashMap<>();
188+
params.put("foo", "bar");
189+
190+
VoiceGrant pvg = new VoiceGrant()
191+
.setOutgoingApplication("AP123", params);
192+
193+
Jwt token =
194+
new AccessToken.Builder(ACCOUNT_SID, SIGNING_KEY_SID, SECRET)
195+
.grant(pvg)
196+
.build();
197+
198+
Claims claims =
199+
Jwts.parser()
200+
.setSigningKey(SECRET.getBytes())
201+
.parseClaimsJws(token.toJwt())
202+
.getBody();
203+
204+
validateToken(claims);
205+
Map<String, Object> decodedGrants = (Map<String, Object>) claims.get("grants");
206+
Assert.assertEquals(1, decodedGrants.size());
207+
208+
Map<String, Object> pvgGrant = (Map<String, Object>) decodedGrants.get("voice");
209+
Map<String, Object> outgoing = (Map<String, Object>) pvgGrant.get("outgoing");
210+
Map<String, Object> outgoingParams = (Map<String, Object>) outgoing.get("params");
211+
Assert.assertEquals("AP123", outgoing.get("application_sid"));
212+
Assert.assertEquals("bar", outgoingParams.get("foo"));
213+
}
184214
}

0 commit comments

Comments
 (0)