Support for Twilio MessageServices

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2016-06-12 13:50:13 -07:00
parent 6a80ce878f
commit 8b5106adc7
2 changed files with 21 additions and 6 deletions

View File

@ -40,6 +40,9 @@ public class TwilioConfiguration {
@JsonProperty @JsonProperty
private String localDomain; private String localDomain;
@JsonProperty
private String messagingServicesId;
public String getAccountId() { public String getAccountId() {
return accountId; return accountId;
} }
@ -55,4 +58,8 @@ public class TwilioConfiguration {
public String getLocalDomain() { public String getLocalDomain() {
return localDomain; return localDomain;
} }
public String getMessagingServicesId() {
return messagingServicesId;
}
} }

View File

@ -28,6 +28,7 @@ import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair; import org.apache.http.message.BasicNameValuePair;
import org.whispersystems.textsecuregcm.configuration.TwilioConfiguration; import org.whispersystems.textsecuregcm.configuration.TwilioConfiguration;
import org.whispersystems.textsecuregcm.util.Constants; import org.whispersystems.textsecuregcm.util.Constants;
import org.whispersystems.textsecuregcm.util.Util;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -53,14 +54,16 @@ public class TwilioSmsSender {
private final String accountId; private final String accountId;
private final String accountToken; private final String accountToken;
private final ArrayList<String> numbers; private final ArrayList<String> numbers;
private final String messagingServicesId;
private final String localDomain; private final String localDomain;
private final Random random; private final Random random;
public TwilioSmsSender(TwilioConfiguration config) { public TwilioSmsSender(TwilioConfiguration config) {
this.accountId = config.getAccountId(); this.accountId = config.getAccountId ();
this.accountToken = config.getAccountToken(); this.accountToken = config.getAccountToken();
this.numbers = new ArrayList<>(config.getNumbers()); this.numbers = new ArrayList<>(config.getNumbers());
this.localDomain = config.getLocalDomain(); this.localDomain = config.getLocalDomain();
this.messagingServicesId = config.getMessagingServicesId();
this.random = new Random(System.currentTimeMillis()); this.random = new Random(System.currentTimeMillis());
} }
@ -71,7 +74,12 @@ public class TwilioSmsSender {
MessageFactory messageFactory = client.getAccount().getMessageFactory(); MessageFactory messageFactory = client.getAccount().getMessageFactory();
List<NameValuePair> messageParams = new LinkedList<>(); List<NameValuePair> messageParams = new LinkedList<>();
messageParams.add(new BasicNameValuePair("To", destination)); messageParams.add(new BasicNameValuePair("To", destination));
if (Util.isEmpty(messagingServicesId)) {
messageParams.add(new BasicNameValuePair("From", getRandom(random, numbers))); messageParams.add(new BasicNameValuePair("From", getRandom(random, numbers)));
} else {
messageParams.add(new BasicNameValuePair("MessagingServiceSid", messagingServicesId));
}
if ("ios".equals(clientType.orNull())) { if ("ios".equals(clientType.orNull())) {
messageParams.add(new BasicNameValuePair("Body", String.format(SmsSender.SMS_IOS_VERIFICATION_TEXT, verificationCode, verificationCode))); messageParams.add(new BasicNameValuePair("Body", String.format(SmsSender.SMS_IOS_VERIFICATION_TEXT, verificationCode, verificationCode)));