diff --git a/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java b/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java index 481965d..9e130f8 100644 --- a/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java +++ b/src/main/java/org/whispersystems/textsecuregcm/sms/TwilioSmsSender.java @@ -19,105 +19,36 @@ package org.whispersystems.textsecuregcm.sms; import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.SharedMetricRegistries; -import com.twilio.sdk.TwilioRestClient; -import com.twilio.sdk.TwilioRestException; -import com.twilio.sdk.resource.factory.CallFactory; -import com.twilio.sdk.resource.factory.MessageFactory; -import org.apache.http.NameValuePair; -import org.apache.http.message.BasicNameValuePair; import org.whispersystems.textsecuregcm.configuration.TwilioConfiguration; import org.whispersystems.textsecuregcm.util.Constants; -import org.whispersystems.textsecuregcm.util.Util; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; import java.util.Optional; -import java.util.Random; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import static com.codahale.metrics.MetricRegistry.name; -@SuppressWarnings("OptionalUsedAsFieldOrParameterType") public class TwilioSmsSender { - public static final String SAY_TWIML = "\n" + - "\n" + - " " + SmsSender.VOX_VERIFICATION_TEXT + "%s.\n" + - ""; - private final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME); private final Meter smsMeter = metricRegistry.meter(name(getClass(), "sms", "delivered")); private final Meter voxMeter = metricRegistry.meter(name(getClass(), "vox", "delivered")); - private final String accountId; - private final String accountToken; - private final ArrayList numbers; - private final String messagingServicesId; - private final String localDomain; - private final Random random; + private final Logger logger = LoggerFactory.getLogger(TwilioSmsSender.class); public TwilioSmsSender(TwilioConfiguration config) { - this.accountId = config.getAccountId (); - this.accountToken = config.getAccountToken(); - this.numbers = new ArrayList<>(config.getNumbers()); - this.localDomain = config.getLocalDomain(); - this.messagingServicesId = config.getMessagingServicesId(); - this.random = new Random(System.currentTimeMillis()); } - public void deliverSmsVerification(String destination, Optional clientType, String verificationCode) - throws IOException, TwilioRestException - { - TwilioRestClient client = new TwilioRestClient(accountId, accountToken); - MessageFactory messageFactory = client.getAccount().getMessageFactory(); - List messageParams = new LinkedList<>(); - messageParams.add(new BasicNameValuePair("To", destination)); - - if (Util.isEmpty(messagingServicesId)) { - messageParams.add(new BasicNameValuePair("From", getRandom(random, numbers))); - } else { - messageParams.add(new BasicNameValuePair("MessagingServiceSid", messagingServicesId)); - } - - if ("ios".equals(clientType.orElse(null))) { - messageParams.add(new BasicNameValuePair("Body", String.format(SmsSender.SMS_IOS_VERIFICATION_TEXT, verificationCode, verificationCode))); - } else { - messageParams.add(new BasicNameValuePair("Body", String.format(SmsSender.SMS_VERIFICATION_TEXT, verificationCode))); - } - - try { - messageFactory.create(messageParams); - } catch (RuntimeException damnYouTwilio) { - throw new IOException(damnYouTwilio); - } - + public void deliverSmsVerification(String destination, Optional clientType, String verificationCode) throws IOException { + logger.info("Pretending to send SMS verification to " + destination + ": " + verificationCode); smsMeter.mark(); } - public void deliverVoxVerification(String destination, String verificationCode) - throws IOException, TwilioRestException - { - TwilioRestClient client = new TwilioRestClient(accountId, accountToken); - CallFactory callFactory = client.getAccount().getCallFactory(); - Map callParams = new HashMap<>(); - callParams.put("To", destination); - callParams.put("From", getRandom(random, numbers)); - callParams.put("Url", "https://" + localDomain + "/v1/accounts/voice/twiml/" + verificationCode); - - try { - callFactory.create(callParams); - } catch (RuntimeException damnYouTwilio) { - throw new IOException(damnYouTwilio); - } - + public void deliverVoxVerification(String destination, String verificationCode) throws IOException { + logger.info("Pretending to send voice verification to " + destination + ": " + verificationCode); voxMeter.mark(); } - private String getRandom(Random random, ArrayList elements) { - return elements.get(random.nextInt(elements.size())); - } - }