mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 18:48:08 +01:00
Add GooglePlayBillingManager
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2024 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.whispersystems.textsecuregcm.configuration;
|
||||
|
||||
import java.util.Map;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import org.whispersystems.textsecuregcm.configuration.secrets.SecretString;
|
||||
|
||||
/**
|
||||
* @param credentialsJson Service account credentials for Play Billing API
|
||||
* @param packageName The app package name
|
||||
* @param applicationName The app application name
|
||||
* @param productIdToLevel A map of productIds offered in the play billing subscription catalog to their corresponding
|
||||
* signal subscription level
|
||||
*/
|
||||
public record GooglePlayBillingConfiguration(
|
||||
@NotNull SecretString credentialsJson,
|
||||
@NotNull String packageName,
|
||||
@NotBlank String applicationName,
|
||||
@NotNull Map<String, Long> productIdToLevel) {}
|
||||
@@ -29,6 +29,7 @@ public class SubscriptionConfiguration {
|
||||
private final Duration badgeExpiration;
|
||||
|
||||
private final Duration backupExpiration;
|
||||
private final Duration backupGracePeriod;
|
||||
private final Duration backupFreeTierMediaDuration;
|
||||
private final Map<Long, SubscriptionLevelConfiguration.Donation> donationLevels;
|
||||
private final Map<Long, SubscriptionLevelConfiguration.Backup> backupLevels;
|
||||
@@ -38,6 +39,7 @@ public class SubscriptionConfiguration {
|
||||
@JsonProperty("badgeGracePeriod") @Valid Duration badgeGracePeriod,
|
||||
@JsonProperty("badgeExpiration") @Valid Duration badgeExpiration,
|
||||
@JsonProperty("backupExpiration") @Valid Duration backupExpiration,
|
||||
@JsonProperty("backupGracePeriod") @Valid Duration backupGracePeriod,
|
||||
@JsonProperty("backupFreeTierMediaDuration") @Valid Duration backupFreeTierMediaDuration,
|
||||
@JsonProperty("levels") @Valid Map<@NotNull @Min(1) Long, SubscriptionLevelConfiguration.@NotNull @Valid Donation> donationLevels,
|
||||
@JsonProperty("backupLevels") @Valid Map<@NotNull @Min(1) Long, SubscriptionLevelConfiguration.@NotNull @Valid Backup> backupLevels) {
|
||||
@@ -46,6 +48,7 @@ public class SubscriptionConfiguration {
|
||||
this.backupFreeTierMediaDuration = backupFreeTierMediaDuration;
|
||||
this.donationLevels = donationLevels;
|
||||
this.backupExpiration = backupExpiration;
|
||||
this.backupGracePeriod = backupGracePeriod;
|
||||
this.backupLevels = backupLevels == null ? Collections.emptyMap() : backupLevels;
|
||||
}
|
||||
|
||||
@@ -62,6 +65,10 @@ public class SubscriptionConfiguration {
|
||||
return backupExpiration;
|
||||
}
|
||||
|
||||
public Duration getBackupGracePeriod() {
|
||||
return backupGracePeriod;
|
||||
}
|
||||
|
||||
public SubscriptionLevelConfiguration getSubscriptionLevel(long level) {
|
||||
return Optional
|
||||
.<SubscriptionLevelConfiguration>ofNullable(this.donationLevels.get(level))
|
||||
|
||||
Reference in New Issue
Block a user