diff --git a/core/src/main/java/google/registry/config/RegistryConfig.java b/core/src/main/java/google/registry/config/RegistryConfig.java index 38e8e73c4..bdd6dc24e 100644 --- a/core/src/main/java/google/registry/config/RegistryConfig.java +++ b/core/src/main/java/google/registry/config/RegistryConfig.java @@ -1397,6 +1397,47 @@ public final class RegistryConfig { return config.bulkPricingPackageMonitoring.bulkPricingPackageDomainLimitUpgradeEmailBody; } + @Provides + @Config("bsaGcsBucket") + public static String provideBsaGcsBucket(@Config("projectId") String projectId) { + return projectId + "-bsa"; + } + + @Provides + @Config("bsaChecksumAlgorithm") + public static String provideBsaChecksumAlgorithm(RegistryConfigSettings config) { + return config.bsa.bsaChecksumAlgorithm; + } + + @Provides + @Config("bsaLockLeaseExpiry") + public static Duration provideBsaLockLeaseExpiry(RegistryConfigSettings config) { + return Duration.standardMinutes(config.bsa.bsaLockLeaseExpiryMinutes); + } + + /** Returns the desired interval between successive BSA downloads. */ + @Provides + @Config("bsaDownloadInterval") + public static Duration provideBsaDownloadInterval(RegistryConfigSettings config) { + return Duration.standardMinutes(config.bsa.bsaDownloadIntervalMinutes); + } + + /** + * Returns the maximum period when a BSA download can be skipped due to the checksum-based + * equality check with the previous download. + */ + @Provides + @Config("bsaMaxNopInterval") + public static Duration provideBsaMaxNopInterval(RegistryConfigSettings config) { + return Duration.standardHours(config.bsa.bsaMaxNopIntervalHours); + } + + @Provides + @Config("bsaLabelTxnBatchSize") + public static int provideBsaLabelTxnBatchSize(RegistryConfigSettings config) { + return config.bsa.bsaLabelTxnBatchSize; + } + @Provides @Config("bsaAuthUrl") public static String provideBsaAuthUrl(RegistryConfigSettings config) { @@ -1415,6 +1456,27 @@ public final class RegistryConfig { return ImmutableMap.copyOf(config.bsa.dataUrls); } + /** Provides the BSA Http endpoint for reporting order processing status. */ + @Provides + @Config("bsaOrderStatusUrl") + public static String provideBsaOrderStatusUrls(RegistryConfigSettings config) { + return config.bsa.orderStatusUrl; + } + + /** Provides the BSA Http endpoint for reporting new unblockable domains. */ + @Provides + @Config("bsaAddUnblockableDomainsUrl") + public static String provideBsaAddUnblockableDomainsUrls(RegistryConfigSettings config) { + return String.format("%s?%s", config.bsa.unblockableDomainsUrl, "action=add"); + } + + /** Provides the BSA Http endpoint for reporting domains that have become blockable. */ + @Provides + @Config("bsaRemoveUnblockableDomainsUrl") + public static String provideBsaRemoveUnblockableDomainsUrls(RegistryConfigSettings config) { + return String.format("%s?%s", config.bsa.unblockableDomainsUrl, "action=remove"); + } + private static String formatComments(String text) { return Splitter.on('\n').omitEmptyStrings().trimResults().splitToList(text).stream() .map(s -> "# " + s) diff --git a/core/src/main/java/google/registry/config/RegistryConfigSettings.java b/core/src/main/java/google/registry/config/RegistryConfigSettings.java index c2544801b..1cd2a12a9 100644 --- a/core/src/main/java/google/registry/config/RegistryConfigSettings.java +++ b/core/src/main/java/google/registry/config/RegistryConfigSettings.java @@ -267,8 +267,15 @@ public class RegistryConfigSettings { /** Configurations for integration with Brand Safety Alliance (BSA) API. */ public static class Bsa { + public String bsaChecksumAlgorithm; + public int bsaLockLeaseExpiryMinutes; + public int bsaDownloadIntervalMinutes; + public int bsaMaxNopIntervalHours; + public int bsaLabelTxnBatchSize; public String authUrl; public int authTokenExpirySeconds; public Map dataUrls; + public String orderStatusUrl; + public String unblockableDomainsUrl; } } diff --git a/core/src/main/java/google/registry/config/files/default-config.yaml b/core/src/main/java/google/registry/config/files/default-config.yaml index 57c87a66b..68965a970 100644 --- a/core/src/main/java/google/registry/config/files/default-config.yaml +++ b/core/src/main/java/google/registry/config/files/default-config.yaml @@ -617,3 +617,7 @@ bsa: dataUrls: "BLOCK": "https://" "BLOCK_PLUS": "https://" + # Http endpoint for reporting order processing status + orderStatusUrl: "https://" + # Http endpoint for reporting changes in the set of unblockable domains. + unblockableDomainsUrl: "https://"