mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-21 03:48:05 +01:00
Parse locale strings when sending voice verification codes.
This commit is contained in:
committed by
Jon Chambers
parent
3ea535a412
commit
ca2f7d2eed
@@ -16,6 +16,7 @@ import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@@ -184,7 +185,7 @@ public class AccountController {
|
||||
@PathParam("number") String number,
|
||||
@HeaderParam("X-Forwarded-For") String forwardedFor,
|
||||
@HeaderParam("User-Agent") List<String> userAgent,
|
||||
@HeaderParam("Accept-Language") Optional<String> locale,
|
||||
@HeaderParam("Accept-Language") Optional<String> acceptLanguage,
|
||||
@QueryParam("client") Optional<String> client,
|
||||
@QueryParam("captcha") Optional<String> captcha,
|
||||
@QueryParam("challenge") Optional<String> pushChallenge)
|
||||
@@ -247,7 +248,11 @@ public class AccountController {
|
||||
} else if (transport.equals("sms")) {
|
||||
smsSender.deliverSmsVerification(number, client, verificationCode.getVerificationCodeDisplay());
|
||||
} else if (transport.equals("voice")) {
|
||||
smsSender.deliverVoxVerification(number, verificationCode.getVerificationCode(), locale);
|
||||
final Optional<Locale> maybeLocale = acceptLanguage.map(Locale.LanguageRange::parse)
|
||||
.flatMap(ranges -> ranges.stream().findFirst())
|
||||
.map(range -> Locale.forLanguageTag(range.getRange()));
|
||||
|
||||
smsSender.deliverVoxVerification(number, verificationCode.getVerificationCode(), maybeLocale);
|
||||
}
|
||||
|
||||
metricRegistry.meter(name(AccountController.class, "create", Util.getCountryCode(number))).mark();
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
package org.whispersystems.textsecuregcm.sms;
|
||||
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
|
||||
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
||||
@@ -24,7 +25,7 @@ public class SmsSender {
|
||||
twilioSender.deliverSmsVerification(destination, clientType, verificationCode);
|
||||
}
|
||||
|
||||
public void deliverVoxVerification(String destination, String verificationCode, Optional<String> locale) {
|
||||
twilioSender.deliverVoxVerification(destination, verificationCode, locale);
|
||||
public void deliverVoxVerification(String destination, String verificationCode, Optional<Locale> maybeLocale) {
|
||||
twilioSender.deliverVoxVerification(destination, verificationCode, maybeLocale);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.whispersystems.textsecuregcm.configuration.TwilioConfiguration;
|
||||
@@ -143,11 +144,19 @@ public class TwilioSmsSender {
|
||||
}
|
||||
}
|
||||
|
||||
public CompletableFuture<Boolean> deliverVoxVerification(String destination, String verificationCode, Optional<String> locale) {
|
||||
public CompletableFuture<Boolean> deliverVoxVerification(String destination, String verificationCode, Optional<Locale> maybeLocale) {
|
||||
String url = "https://" + localDomain + "/v1/voice/description/" + verificationCode;
|
||||
|
||||
if (locale.isPresent()) {
|
||||
url += "?l=" + locale.get();
|
||||
if (maybeLocale.isPresent()) {
|
||||
final String localeString = maybeLocale.map(locale -> {
|
||||
if (StringUtils.isNotBlank(locale.getCountry())) {
|
||||
return locale.getLanguage().toLowerCase() + "-" + locale.getCountry().toUpperCase();
|
||||
} else {
|
||||
return locale.getLanguage().toLowerCase();
|
||||
}
|
||||
}).get();
|
||||
|
||||
url += "?l=" + localeString;
|
||||
}
|
||||
|
||||
Map<String, String> requestParameters = new HashMap<>();
|
||||
|
||||
Reference in New Issue
Block a user