-
Notifications
You must be signed in to change notification settings - Fork 0
config lib
Boriss Melikjan edited this page Sep 9, 2025
·
1 revision
Central configuration for RIA DigiDoc
To fetch and package default configuration, run command:
./gradlew clean fetchAndPackageDefaultConfiguration app:assembleThe default configuration setup is:
Configuration downloaded from: https://id.eesti.ee/
Configuration update interval: 7 (days)
The central configuration options can be overridden with command (replace --args with custom values):
./gradlew clean fetchAndPackageDefaultConfiguration --args='https://example.com 5' app:assembleThe first argument (URL) is where the configuration is downloaded from. The second argument is interval, where every given number of days, the configuration is updated.
- The URL argument must contain only the base URL. For example if the specified URL is
https://id.eesti.ee/, then the configuration will be downloaded fromhttps://id.eesti.ee/config.json(public key from/config.puband signature from/config.rsa)
The build will be stopped if configuration validation fails.
val configurationLoader = ConfigurationLoaderImpl(
Gson(),
CentralConfigurationRepositoryImpl(
CentralConfigurationServiceImpl("Tests", ConfigurationProperty()),
),
ConfigurationProperty(),
ConfigurationPropertiesImpl(),
ConfigurationSignatureVerifierImpl(),
)
val configurationRepository = ConfigurationRepositoryImpl(context, configurationLoader)
val configurationProvider = configurationRepository.getConfiguration()@HiltViewModel
class SharedSettingsViewModel
@Inject
constructor(
private val configurationRepository: ConfigurationRepository,
) : ViewModel() {
private val _updatedConfiguration = MutableLiveData<ConfigurationProvider?>()
val updatedConfiguration: LiveData<ConfigurationProvider?> = _updatedConfiguration
init {
CoroutineScope(Main).launch {
configurationRepository.observeConfigurationUpdates { newConfig ->
_updatedConfiguration.value = newConfig
}
}
}
}val configurationLoader = ConfigurationLoaderImpl(
Gson(),
CentralConfigurationRepositoryImpl(
CentralConfigurationServiceImpl("Tests", ConfigurationProperty()),
),
ConfigurationProperty(),
ConfigurationPropertiesImpl(),
ConfigurationSignatureVerifierImpl(),
)
val configurationRepository = ConfigurationRepositoryImpl(context, configurationLoader)
val proxySetting = ProxySetting.NO_PROXY
val manualProxy = ManualProxy("", 80, "", "")
val configurationProvider = runBlocking {
configurationRepository.getCentralConfiguration(proxySetting, manualProxy)
}File: configuration.properties
val configurationProperties = ConfigurationPropertiesImpl()
val versionSerial = configurationProperties.getConfigurationProperties(context).versionSerialUsed to cache and get configuration data
val cachedSignature =
ConfigurationCache.getCachedFile(context, CACHED_CONFIG_RSA)
val currentSignature = cachedSignature.readBytes()val configurationProvider = configurationRepository.getConfiguration()
configurationProvider?.configurationLastUpdateCheckDateval configurationProvider = configurationRepository.getConfiguration()
configurationProvider?.configurationUpdateDate