package io.caf.faceliveness import com.caf.facelivenessiproov.input.CAFStage import com.caf.facelivenessiproov.input.Time import com.caf.facelivenessiproov.input.iproov.Filter import org.json.JSONObject import java.io.Serializable internal class CafFaceLivenessConfig(jsonString: String) : Serializable { val cafStage: CAFStage? val filter: Filter? val enableScreenshots: Boolean? val loadingScreen: Boolean? val imageUrlExpirationTime: Time? val faceLivenessBaseUrl: String? val authenticationBaseUrl: String? val certificates: List? init { val jsonObject = JSONObject(jsonString) cafStage = if (jsonObject.has(CAF_STAGE)) CAFStage.values()[jsonObject.getInt(CAF_STAGE)] else null filter = if (jsonObject.has(FILTER)) Filter.valueOf(jsonObject.getString(FILTER)) else null enableScreenshots = jsonObject.optBoolean(ENABLE_SCREENSHOTS) loadingScreen = jsonObject.optBoolean(LOADING_SCREEN) imageUrlExpirationTime = if (jsonObject.has(IMAGE_URL_EXPIRATION_TIME)) Time.valueOf( jsonObject.getString(IMAGE_URL_EXPIRATION_TIME) ) else null faceLivenessBaseUrl = jsonObject.optString(FACE_LIVENESS_BASE_URL) authenticationBaseUrl = jsonObject.optString(AUTHENTICATION_BASE_URL) certificates = if (jsonObject.isNull(CERTIFICATES)) emptyList() else { val jsonArray = jsonObject.optJSONArray(CERTIFICATES) List(jsonArray.length()) { jsonArray.getString(it) } } } private companion object { const val CAF_STAGE = "cafStage" const val FILTER = "filter" const val ENABLE_SCREENSHOTS = "enableScreenshots" const val LOADING_SCREEN = "loadingScreen" const val IMAGE_URL_EXPIRATION_TIME = "imageUrlExpirationTime" const val FACE_LIVENESS_BASE_URL = "faceLivenessBaseUrl" const val AUTHENTICATION_BASE_URL = "authenticationBaseUrl" const val CERTIFICATES = "certificates" } }