diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java new file mode 100644 index 000000000..8e5814ce9 --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/recaptcha/TransitionalRecaptchaClient.java @@ -0,0 +1,33 @@ +/* + * Copyright 2021 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.recaptcha; + +import java.util.Objects; +import javax.annotation.Nonnull; + +public class TransitionalRecaptchaClient implements RecaptchaClient { + + private static final String PREFIX = "signal-v2:"; + + private final LegacyRecaptchaClient legacyRecaptchaClient; + private final EnterpriseRecaptchaClient enterpriseRecaptchaClient; + + public TransitionalRecaptchaClient( + @Nonnull final LegacyRecaptchaClient legacyRecaptchaClient, + @Nonnull final EnterpriseRecaptchaClient enterpriseRecaptchaClient) { + this.legacyRecaptchaClient = Objects.requireNonNull(legacyRecaptchaClient); + this.enterpriseRecaptchaClient = Objects.requireNonNull(enterpriseRecaptchaClient); + } + + @Override + public boolean verify(@Nonnull final String token, @Nonnull final String ip) { + if (token.startsWith(PREFIX)) { + return enterpriseRecaptchaClient.verify(token.substring(PREFIX.length()), ip); + } else { + return legacyRecaptchaClient.verify(token, ip); + } + } +}