Address code review comments
This commit is contained in:
parent
b7e0e5a356
commit
a7968ccc3c
|
@ -1,6 +1,6 @@
|
||||||
package org.whispersystems.textsecuregcm.sms;
|
package org.whispersystems.textsecuregcm.sms;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.whispersystems.textsecuregcm.configuration.TwilioCountrySenderIdConfiguration;
|
import org.whispersystems.textsecuregcm.configuration.TwilioCountrySenderIdConfiguration;
|
||||||
import org.whispersystems.textsecuregcm.configuration.TwilioSenderIdConfiguration;
|
import org.whispersystems.textsecuregcm.configuration.TwilioSenderIdConfiguration;
|
||||||
import org.whispersystems.textsecuregcm.util.Util;
|
import org.whispersystems.textsecuregcm.util.Util;
|
||||||
|
@ -12,12 +12,12 @@ import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class SenderIdStrategy {
|
class SenderIdSelector {
|
||||||
private final String defaultSenderId;
|
private final String defaultSenderId;
|
||||||
private final Map<String, String> countrySpecificSenderIds;
|
private final Map<String, String> countrySpecificSenderIds;
|
||||||
private final Set<String> countryCodesWithoutSenderId;
|
private final Set<String> countryCodesWithoutSenderId;
|
||||||
|
|
||||||
public SenderIdStrategy(String defaultSenderId, List<TwilioCountrySenderIdConfiguration> countrySpecificSenderIds, Set<String> countryCodesWithoutSenderId) {
|
SenderIdSelector(String defaultSenderId, List<TwilioCountrySenderIdConfiguration> countrySpecificSenderIds, Set<String> countryCodesWithoutSenderId) {
|
||||||
this.defaultSenderId = defaultSenderId;
|
this.defaultSenderId = defaultSenderId;
|
||||||
this.countrySpecificSenderIds = countrySpecificSenderIds.stream().collect(Collectors.toMap(
|
this.countrySpecificSenderIds = countrySpecificSenderIds.stream().collect(Collectors.toMap(
|
||||||
TwilioCountrySenderIdConfiguration::getCountryCode,
|
TwilioCountrySenderIdConfiguration::getCountryCode,
|
||||||
|
@ -25,23 +25,18 @@ public class SenderIdStrategy {
|
||||||
this.countryCodesWithoutSenderId = countryCodesWithoutSenderId;
|
this.countryCodesWithoutSenderId = countryCodesWithoutSenderId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SenderIdStrategy(TwilioSenderIdConfiguration configuration) {
|
SenderIdSelector(TwilioSenderIdConfiguration configuration) {
|
||||||
this(configuration.getDefaultSenderId(),
|
this(configuration.getDefaultSenderId(),
|
||||||
configuration.getCountrySpecificSenderIds(),
|
configuration.getCountrySpecificSenderIds(),
|
||||||
configuration.getCountryCodesWithoutSenderId());
|
configuration.getCountryCodesWithoutSenderId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<String> get(@NotNull String destination) {
|
Optional<String> getSenderId(@NotNull String destination) {
|
||||||
final String countryCode = Util.getCountryCode(destination);
|
final String countryCode = Util.getCountryCode(destination);
|
||||||
if (countryCodesWithoutSenderId.contains(countryCode)) {
|
if (countryCodesWithoutSenderId.contains(countryCode)) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
final String countrySpecificSenderId = countrySpecificSenderIds.get(countryCode);
|
return Optional.ofNullable(StringUtils.stripToNull(countrySpecificSenderIds.getOrDefault(countryCode, defaultSenderId)));
|
||||||
if (!Strings.isNullOrEmpty(countrySpecificSenderId)) {
|
|
||||||
return Optional.of(countrySpecificSenderId);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Optional.ofNullable(defaultSenderId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -65,8 +65,8 @@ public class TwilioSmsSender {
|
||||||
private final ArrayList<String> numbers;
|
private final ArrayList<String> numbers;
|
||||||
private final String messagingServicesId;
|
private final String messagingServicesId;
|
||||||
private final String localDomain;
|
private final String localDomain;
|
||||||
|
private final SenderIdSelector senderIdSelector;
|
||||||
private final Random random;
|
private final Random random;
|
||||||
private final SenderIdStrategy senderIdStrategy;
|
|
||||||
|
|
||||||
private final FaultTolerantHttpClient httpClient;
|
private final FaultTolerantHttpClient httpClient;
|
||||||
private final URI smsUri;
|
private final URI smsUri;
|
||||||
|
@ -81,7 +81,7 @@ public class TwilioSmsSender {
|
||||||
this.numbers = new ArrayList<>(twilioConfiguration.getNumbers());
|
this.numbers = new ArrayList<>(twilioConfiguration.getNumbers());
|
||||||
this.localDomain = twilioConfiguration.getLocalDomain();
|
this.localDomain = twilioConfiguration.getLocalDomain();
|
||||||
this.messagingServicesId = twilioConfiguration.getMessagingServicesId();
|
this.messagingServicesId = twilioConfiguration.getMessagingServicesId();
|
||||||
this.senderIdStrategy = new SenderIdStrategy(twilioConfiguration.getSenderId());
|
this.senderIdSelector = new SenderIdSelector(twilioConfiguration.getSenderId());
|
||||||
this.random = new Random(System.currentTimeMillis());
|
this.random = new Random(System.currentTimeMillis());
|
||||||
this.smsUri = URI.create(baseUri + "/2010-04-01/Accounts/" + accountId + "/Messages.json");
|
this.smsUri = URI.create(baseUri + "/2010-04-01/Accounts/" + accountId + "/Messages.json");
|
||||||
this.voxUri = URI.create(baseUri + "/2010-04-01/Accounts/" + accountId + "/Calls.json" );
|
this.voxUri = URI.create(baseUri + "/2010-04-01/Accounts/" + accountId + "/Calls.json" );
|
||||||
|
@ -174,7 +174,7 @@ public class TwilioSmsSender {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setOriginationRequestParameter(String destination, Map<String, String> requestParameters) {
|
private void setOriginationRequestParameter(String destination, Map<String, String> requestParameters) {
|
||||||
final Optional<String> senderId = senderIdStrategy.get(destination);
|
final Optional<String> senderId = senderIdSelector.getSenderId(destination);
|
||||||
if (senderId.isPresent()) {
|
if (senderId.isPresent()) {
|
||||||
requestParameters.put("From", senderId.get());
|
requestParameters.put("From", senderId.get());
|
||||||
} else if (Util.isEmpty(messagingServicesId)) {
|
} else if (Util.isEmpty(messagingServicesId)) {
|
||||||
|
|
Loading…
Reference in New Issue