Trigger pub/sub events for one-time donations via Braintree (PayPal)

This commit is contained in:
Jon Chambers
2024-04-22 18:13:42 -04:00
committed by Jon Chambers
parent 516c481e94
commit 8999f0104f
10 changed files with 226 additions and 11 deletions

View File

@@ -10,12 +10,14 @@ import io.dropwizard.lifecycle.Managed;
import io.lettuce.core.SetArgs;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ScheduledExecutorService;
@@ -166,4 +168,18 @@ public class CurrencyConversionManager implements Managed {
return n;
}
}
@VisibleForTesting
void setCachedFixerValues(final Map<String, BigDecimal> cachedFixerValues) {
this.cachedFixerValues = cachedFixerValues;
}
public Optional<BigDecimal> convertToUsd(final BigDecimal amount, final String currency) {
if ("USD".equalsIgnoreCase(currency)) {
return Optional.of(amount);
}
return Optional.ofNullable(cachedFixerValues.get(currency.toUpperCase(Locale.ROOT)))
.map(conversionRate -> amount.divide(conversionRate, 2, RoundingMode.HALF_EVEN));
}
}