Include media TTL in backup config

This commit is contained in:
Ravi Khadiwala 2024-11-07 13:09:40 -06:00 committed by ravi-signal
parent 776c147ea4
commit fc6075f19c
4 changed files with 12 additions and 2 deletions

View File

@ -6,6 +6,7 @@
package org.whispersystems.textsecuregcm.configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.Duration;
import java.util.Map;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
@ -30,6 +31,7 @@ public sealed interface SubscriptionLevelConfiguration permits
record Backup(
@JsonProperty("playProductId") @NotEmpty String playProductId,
@JsonProperty("mediaTtl") @NotNull Duration mediaTtl,
@JsonProperty("prices") @Valid Map<@NotEmpty String, @NotNull @Valid SubscriptionPriceConfiguration> prices)
implements SubscriptionLevelConfiguration {}

View File

@ -206,7 +206,10 @@ public class SubscriptionController {
.entrySet().stream()
.collect(Collectors.toMap(
e -> String.valueOf(e.getKey()),
e -> new BackupLevelConfiguration(BackupManager.MAX_TOTAL_BACKUP_MEDIA_BYTES, e.getValue().playProductId())));
e -> new BackupLevelConfiguration(
BackupManager.MAX_TOTAL_BACKUP_MEDIA_BYTES,
e.getValue().playProductId(),
e.getValue().mediaTtl().toDays())));
return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(), donationLevels,
new BackupConfiguration(backupLevels, subscriptionConfiguration.getbackupFreeTierMediaDuration().toDays()),
@ -517,7 +520,9 @@ public class SubscriptionController {
@Schema(description = "The amount of media storage in bytes that a paying subscriber may store")
long storageAllowanceBytes,
@Schema(description = "The play billing productID associated with this backup level")
String playProductId) {}
String playProductId,
@Schema(description = "The duration, in days, for which your backed up media is retained on the server after you stop refreshing with a paid credential")
long mediaTtlDays) {}
@GET
@Path("/configuration")

View File

@ -1189,6 +1189,7 @@ class SubscriptionControllerTest {
assertThat(response.backup().levels()).containsOnlyKeys("201").extractingByKey("201").satisfies(configuration -> {
assertThat(configuration.storageAllowanceBytes()).isEqualTo(BackupManager.MAX_TOTAL_BACKUP_MEDIA_BYTES);
assertThat(configuration.playProductId()).isEqualTo("testPlayProductId");
assertThat(configuration.mediaTtlDays()).isEqualTo(40);
});
assertThat(response.backup().freeTierMediaDays()).isEqualTo(30);
@ -1244,6 +1245,7 @@ class SubscriptionControllerTest {
backupLevels:
201:
playProductId: testPlayProductId
mediaTtl: P40D
prices:
usd:
amount: '5'

View File

@ -370,6 +370,7 @@ subscription: # configuration for Stripe subscriptions
backupLevels:
201:
playProductId: EXAMPLE
mediaTtl: P30D
prices: {}
levels:
500: