mirror of
https://github.com/signalapp/Signal-Server
synced 2026-08-25 11:52:02 +01:00
Tag OneTimeDonationsManager metric with provider
This commit is contained in:
committed by
ravi-signal
parent
8c86e2e5ef
commit
cbc89f541c
+1
-1
@@ -389,7 +389,7 @@ public class OneTimeDonationController {
|
||||
} catch (WriteConflictException _) {
|
||||
throw new WebApplicationException(Response.Status.CONFLICT);
|
||||
}
|
||||
final Instant paidAt = oneTimeDonationsManager.getPaidAt(paymentDetails.id(), paymentDetails.created());
|
||||
final Instant paidAt = oneTimeDonationsManager.getPaidAt(request.processor, paymentDetails.id(), paymentDetails.created());
|
||||
final Instant expiration = paidAt
|
||||
.plus(levelDetails.levelExpiration())
|
||||
.truncatedTo(ChronoUnit.DAYS)
|
||||
|
||||
+1
-1
@@ -311,7 +311,7 @@ public class OneTimeDonationsGrpcService extends SimpleOneTimeDonationsGrpc.OneT
|
||||
.setReceiptAlreadyIssued(FailedPrecondition.getDefaultInstance()).build();
|
||||
}
|
||||
|
||||
final Instant paidAt = oneTimeDonationsManager.getPaidAt(paymentDetails.id(), paymentDetails.created());
|
||||
final Instant paidAt = oneTimeDonationsManager.getPaidAt(processor, paymentDetails.id(), paymentDetails.created());
|
||||
final Instant expiration = paidAt
|
||||
.plus(levelDetails.levelExpiration())
|
||||
.truncatedTo(ChronoUnit.DAYS)
|
||||
|
||||
+5
-2
@@ -13,12 +13,15 @@ import java.time.Instant;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import javax.annotation.Nonnull;
|
||||
import io.micrometer.core.instrument.Tags;
|
||||
import org.whispersystems.textsecuregcm.subscriptions.PaymentProvider;
|
||||
import org.whispersystems.textsecuregcm.util.AttributeValues;
|
||||
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
|
||||
import software.amazon.awssdk.services.dynamodb.model.GetItemRequest;
|
||||
import software.amazon.awssdk.services.dynamodb.model.GetItemResponse;
|
||||
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
|
||||
|
||||
/// Tracks when a payment intent actually becomes paid. May be updated externally by a webhook from the payment provider.
|
||||
public class OneTimeDonationsManager {
|
||||
public static final String KEY_PAYMENT_ID = "P"; // S
|
||||
public static final String ATTR_PAID_AT = "A"; // N
|
||||
@@ -38,7 +41,7 @@ public class OneTimeDonationsManager {
|
||||
this.dynamoDbClient = Objects.requireNonNull(dynamoDbClient);
|
||||
}
|
||||
|
||||
public Instant getPaidAt(final String paymentId, final Instant fallbackTimestamp) {
|
||||
public Instant getPaidAt(final PaymentProvider paymentProvider, final String paymentId, final Instant fallbackTimestamp) {
|
||||
final GetItemRequest getItemRequest = GetItemRequest.builder()
|
||||
.consistentRead(Boolean.TRUE)
|
||||
.tableName(table)
|
||||
@@ -48,7 +51,7 @@ public class OneTimeDonationsManager {
|
||||
|
||||
final GetItemResponse getItemResponse = dynamoDbClient.getItem(getItemRequest);
|
||||
if (!getItemResponse.hasItem()) {
|
||||
Metrics.counter(ONETIME_DONATION_NOT_FOUND_COUNTER_NAME).increment();
|
||||
Metrics.counter(ONETIME_DONATION_NOT_FOUND_COUNTER_NAME, Tags.of("processor", paymentProvider.name())).increment();
|
||||
return fallbackTimestamp;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -12,6 +12,7 @@ import java.time.Instant;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.whispersystems.textsecuregcm.subscriptions.PaymentProvider;
|
||||
|
||||
public class OnetimeDonationsManagerTest {
|
||||
@RegisterExtension
|
||||
@@ -33,7 +34,7 @@ public class OnetimeDonationsManagerTest {
|
||||
final Instant fallBackTimestamp = Instant.ofEpochSecond(2_000_000);
|
||||
oneTimeDonationsManager.putPaidAt(validPaymentIntentId, paidAt);
|
||||
|
||||
assertThat(oneTimeDonationsManager.getPaidAt(validPaymentIntentId, fallBackTimestamp)).isEqualTo(paidAt);
|
||||
assertThat(oneTimeDonationsManager.getPaidAt("invalidPaymentId", fallBackTimestamp)).isEqualTo(fallBackTimestamp);
|
||||
assertThat(oneTimeDonationsManager.getPaidAt(PaymentProvider.STRIPE, validPaymentIntentId, fallBackTimestamp)).isEqualTo(paidAt);
|
||||
assertThat(oneTimeDonationsManager.getPaidAt(PaymentProvider.STRIPE, "invalidPaymentId", fallBackTimestamp)).isEqualTo(fallBackTimestamp);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user