All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.safetorun.configuration.BackendResilience.kt Maven / Gradle / Ivy

The newest version!
package com.safetorun.configuration

import com.safetorun.resillience.*

/**
 * Safe to run configuration
 */
@kotlinx.serialization.Serializable
data class BackendResilience(
    val blacklistedAppCheck: List = emptyList(),
    val verifySignatureConfiguration: List = emptyList(),
    val installOriginCheck: List = emptyList(),
    val osCheckConfiguration: List = emptyList()
)

/**
 * Backend resilience builder
 */
class BackendResilienceBuilder internal constructor() {
    private val blacklistedAppCheck = mutableListOf()
    private val verifySignatureConfiguration = mutableListOf()
    private val installOriginCheck = mutableListOf()
    private val osCheckConfiguration = mutableListOf()

    fun verifySignature(severity: Severity, configuration: VerifySignatureConfigurationBuilder.() -> Unit) {
        verifySignatureConfiguration.add(
            VerifySignatureConfigurationBuilder(severity)
                .apply(configuration)
                .build()
        )
    }

    fun installOriginCheck(severity: Severity, installOrigin: InstallOriginBuilder.() -> Unit) {
        installOriginCheck.add(
            InstallOriginBuilder(severity).apply(installOrigin).build()
        )
    }

    fun oSCheck(osCheckConf: OSCheckConfigurationBuilder.() -> Unit) {
        osCheckConfiguration.add(
            OSCheckConfigurationBuilder().apply(osCheckConf).build()
        )
    }

    fun blacklistedApp(severity: Severity, blacklistedApp: BlacklistedAppConfigurationBuilder.() -> Unit) {
        blacklistedAppCheck.add(
            BlacklistedAppConfigurationBuilder(severity).apply(blacklistedApp).build()
        )
    }

    internal fun build() = BackendResilience(
        blacklistedAppCheck,
        verifySignatureConfiguration,
        installOriginCheck,
        osCheckConfiguration
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy