From e9a3d52d7fe0535903866647d7feabe66f747f9e Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Wed, 12 May 2021 17:37:26 -0500 Subject: [PATCH] Add an optional description to the payment intent request --- .../configuration/DonationConfiguration.java | 11 +++++++++++ .../controllers/DonationController.java | 13 ++++++++++--- .../tests/controllers/DonationControllerTest.java | 1 + 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DonationConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DonationConfiguration.java index 7e9dd7544..be89e6e4f 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DonationConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/DonationConfiguration.java @@ -16,6 +16,7 @@ public class DonationConfiguration { private String uri; private String apiKey; + private String description; private Set supportedCurrencies; private CircuitBreakerConfiguration circuitBreaker = new CircuitBreakerConfiguration(); private RetryConfiguration retry = new RetryConfiguration(); @@ -42,6 +43,16 @@ public class DonationConfiguration { this.apiKey = apiKey; } + @JsonProperty + public String getDescription() { + return description; + } + + @VisibleForTesting + public void setDescription(final String description) { + this.description = description; + } + @JsonProperty @NotEmpty public Set getSupportedCurrencies() { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DonationController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DonationController.java index bd8c35445..8295e8336 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DonationController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/DonationController.java @@ -20,6 +20,7 @@ import java.net.http.HttpResponse.BodyHandlers; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.Base64; +import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -48,12 +49,14 @@ public class DonationController { private final URI uri; private final String apiKey; + private final String description; private final Set supportedCurrencies; private final FaultTolerantHttpClient httpClient; public DonationController(final Executor executor, final DonationConfiguration configuration) { this.uri = URI.create(configuration.getUri()); this.apiKey = configuration.getApiKey(); + this.description = configuration.getDescription(); this.supportedCurrencies = configuration.getSupportedCurrencies(); this.httpClient = FaultTolerantHttpClient.newBuilder() .withCircuitBreaker(configuration.getCircuitBreaker()) @@ -77,11 +80,15 @@ public class DonationController { return CompletableFuture.completedFuture(Response.status(422).build()); } + final Map formData = new HashMap<>(); + formData.put("amount", Long.toString(request.getAmount())); + formData.put("currency", request.getCurrency()); + if (!Strings.isNullOrEmpty(description)) { + formData.put("description", description); + } final HttpRequest httpRequest = HttpRequest.newBuilder() .uri(uri) - .POST(FormDataBodyPublisher.of(Map.of( - "amount", Long.toString(request.getAmount()), - "currency", request.getCurrency()))) + .POST(FormDataBodyPublisher.of(formData)) .header("Authorization", "Basic " + Base64.getEncoder().encodeToString( (apiKey + ":").getBytes(StandardCharsets.UTF_8))) .header("Content-Type", "application/x-www-form-urlencoded") diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DonationControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DonationControllerTest.java index f38518ed4..2bc0bd398 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DonationControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/DonationControllerTest.java @@ -50,6 +50,7 @@ public class DonationControllerTest { public void before() throws Throwable { DonationConfiguration configuration = new DonationConfiguration(); configuration.setApiKey("test-api-key"); + configuration.setDescription("some description"); configuration.setUri("http://localhost:" + wireMockRule.port() + "/foo/bar"); configuration.setCircuitBreaker(new CircuitBreakerConfiguration()); configuration.setRetry(new RetryConfiguration());