Skip to content

Commit

Permalink
Merge pull request #25 from checkout/PRISM-11215-accept-more-frames-o…
Browse files Browse the repository at this point in the history
…ptions-on-risk-android

PRISM-11215 - Update how frames options are passed to risk SDK
  • Loading branch information
precious-ossai-cko authored Apr 26, 2024
2 parents 756feaa + 89a772f commit 1a7426b
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 33 deletions.
2 changes: 1 addition & 1 deletion Risk/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ afterEvaluate {
from(components.getByName("release"))
groupId = "com.github.checkout"
artifactId = "checkout-risk-sdk-android"
version = "1.0.6"
version = "2.0.0"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ package com.checkout.risk

internal object Constants {
const val PRODUCT_NAME = "risk-android-sdk"
const val RISK_PACKAGE_VERSION = "1.0.6"
const val RISK_PACKAGE_VERSION = "2.0.0"
const val LOGGER_TYPE_IDENTIFIER = "com.checkout.risk-mobile-sdk"
}
38 changes: 20 additions & 18 deletions Risk/src/main/java/com/checkout/risk_sdk_android/LoggerService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Context
import com.checkout.eventlogger.BuildConfig
import com.checkout.eventlogger.CheckoutEventLogger
import com.checkout.eventlogger.Environment
import com.checkout.eventlogger.METADATA_CORRELATION_ID
import com.checkout.eventlogger.domain.model.Event
import com.checkout.eventlogger.domain.model.MonitoringLevel
import com.checkout.eventlogger.domain.model.RemoteProcessorMetadata
Expand Down Expand Up @@ -69,31 +70,33 @@ internal class LoggerService(
}

init {

val logEnvironment: Environment =
when (internalConfig.environment) {
RiskEnvironment.QA, RiskEnvironment.SANDBOX -> Environment.SANDBOX
RiskEnvironment.PRODUCTION -> Environment.PRODUCTION
}

initialise(
context = context,
environment = logEnvironment,
identifier = PRODUCT_IDENTIFIER,
version = CKO_LOGGER_PRODUCT_VERSION
internalConfig = internalConfig
)
}

private fun initialise(
context: Context,
environment: Environment,
identifier: String,
version: String,
internalConfig: RiskSDKInternalConfig
) {
val identifier = internalConfig.framesOptions?.productIdentifier ?: PRODUCT_IDENTIFIER
val version = internalConfig.framesOptions?.version ?: CKO_LOGGER_PRODUCT_VERSION
val correlationId = internalConfig.framesOptions?.correlationId
val environment: Environment =
when (internalConfig.environment) {
RiskEnvironment.QA, RiskEnvironment.SANDBOX -> Environment.SANDBOX
RiskEnvironment.PRODUCTION -> Environment.PRODUCTION
}

logger.enableRemoteProcessor(
environment.toLoggingEnvironment(),
provideProcessorMetadata(context, environment, identifier, version),
)

if (correlationId != null) {
logger.addMetadata(METADATA_CORRELATION_ID, correlationId)
}
}

private fun provideProcessorMetadata(
Expand Down Expand Up @@ -171,6 +174,7 @@ internal class LoggerService(
val timeZoneLog = TimeZone.getDefault().id
val maskedPublicKey = getMaskedPublicKey(internalConfig.merchantPublicKey)
val ddTags = getDDTags(internalConfig.environment.name.lowercase(Locale.ROOT))
val framesMode = internalConfig.framesOptions != null
val monitoringLevel: MonitoringLevel =
when (riskEvent) {
RiskEvent.PUBLISHED, RiskEvent.COLLECTED -> MonitoringLevel.INFO
Expand All @@ -182,14 +186,13 @@ internal class LoggerService(
when (riskEvent) {
RiskEvent.PUBLISHED, RiskEvent.COLLECTED ->
mapOf(
"CorrelationId" to internalConfig.correlationId,
"Block" to blockTime,
"DeviceDataPersist" to deviceDataPersistTime,
"FpLoad" to fpLoadTime,
"FpPublish" to fpPublishTime,
"Total" to totalLatency,
"EventType" to riskEvent.rawValue,
"FramesMode" to internalConfig.framesMode,
"FramesMode" to framesMode,
"MaskedPublicKey" to maskedPublicKey,
"ddTags" to ddTags,
"RiskSDKVersion" to Constants.RISK_PACKAGE_VERSION,
Expand All @@ -200,14 +203,13 @@ internal class LoggerService(

RiskEvent.PUBLISH_FAILURE, RiskEvent.LOAD_FAILURE, RiskEvent.PUBLISH_DISABLED ->
mapOf(
"CorrelationId" to internalConfig.correlationId,
"Block" to blockTime,
"DeviceDataPersist" to deviceDataPersistTime,
"FpLoad" to fpLoadTime,
"FpPublish" to fpPublishTime,
"Total" to totalLatency,
"EventType" to riskEvent.rawValue,
"FramesMode" to internalConfig.framesMode,
"FramesMode" to framesMode,
"MaskedPublicKey" to maskedPublicKey,
"ddTags" to ddTags,
"RiskSDKVersion" to Constants.RISK_PACKAGE_VERSION,
Expand All @@ -222,7 +224,7 @@ internal class LoggerService(
return LoggingEvent(
monitoringLevel = monitoringLevel,
properties = properties,
typeIdentifier = Constants.LOGGER_TYPE_IDENTIFIER,
typeIdentifier = riskEvent.rawValue,
)
}

Expand Down
17 changes: 11 additions & 6 deletions Risk/src/main/java/com/checkout/risk_sdk_android/RiskConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,32 @@ package com.checkout.risk
public data class RiskConfig(
val publicKey: String,
val environment: RiskEnvironment,
val framesMode: Boolean = false,
val correlationId: String? = null
val framesOptions: FramesOptions? = null,
)

public data class FramesOptions(
val version: String,
val productIdentifier: String,
val correlationId: String,
)

internal interface RiskSDKInternalConfig {
val merchantPublicKey: String
val framesMode: Boolean
val environment: RiskEnvironment
val deviceDataEndpoint: String
val fingerprintEndpoint: String
val integrationType: RiskIntegrationType
val sourceType: SourceType
val correlationId: String?
val framesOptions: FramesOptions?
}

internal data class RiskSDKInternalConfigImpl(
val config: RiskConfig,
) : RiskSDKInternalConfig {
override val correlationId: String? = if (config.framesMode) (config.correlationId) else null
private val framesMode: Boolean = config.framesOptions !== null

override val framesOptions: FramesOptions? = config.framesOptions
override var merchantPublicKey: String = config.publicKey
override val framesMode: Boolean = config.framesMode
override val environment: RiskEnvironment = config.environment
override val deviceDataEndpoint: String
override val fingerprintEndpoint: String
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,12 @@ import java.io.InputStreamReader

internal class RiskSDKInternalConfigTestImpl(
override val merchantPublicKey: String,
override val framesMode: Boolean,
override val framesOptions: FramesOptions? = null,
override val environment: RiskEnvironment,
override val deviceDataEndpoint: String,
override val fingerprintEndpoint: String,
override val integrationType: RiskIntegrationType,
override val sourceType: SourceType,
override val correlationId: String? = null
) : RiskSDKInternalConfig

class DeviceDataServiceTest {
Expand Down Expand Up @@ -46,7 +45,6 @@ class DeviceDataServiceTest {
val internalConfig =
RiskSDKInternalConfigTestImpl(
merchantPublicKey = "pk_test_key",
framesMode = false,
environment = RiskEnvironment.QA,
deviceDataEndpoint = mockWebServer.url("/").toString(),
fingerprintEndpoint = mockWebServer.url("/").toString(),
Expand Down Expand Up @@ -84,7 +82,6 @@ class DeviceDataServiceTest {
val internalConfig =
RiskSDKInternalConfigTestImpl(
merchantPublicKey = "pk_test_key",
framesMode = false,
environment = RiskEnvironment.QA,
deviceDataEndpoint = mockWebServer.url("/").toString(),
fingerprintEndpoint = mockWebServer.url("/").toString(),
Expand Down Expand Up @@ -115,7 +112,6 @@ class DeviceDataServiceTest {
val internalConfig =
RiskSDKInternalConfigTestImpl(
merchantPublicKey = "pk_test_key",
framesMode = false,
environment = RiskEnvironment.QA,
deviceDataEndpoint = mockWebServer.url("/").toString(),
fingerprintEndpoint = mockWebServer.url("/").toString(),
Expand All @@ -140,7 +136,7 @@ class DeviceDataServiceTest {

Assert.assertEquals("PUT", request.method)
Assert.assertEquals(
"/collect/fingerprint?riskSdkVersion=1.0.6",
"/collect/fingerprint?riskSdkVersion=2.0.0",
request.path,
)

Expand Down Expand Up @@ -170,7 +166,6 @@ class DeviceDataServiceTest {
val internalConfig =
RiskSDKInternalConfigTestImpl(
merchantPublicKey = "pk_test_key",
framesMode = false,
environment = RiskEnvironment.QA,
deviceDataEndpoint = mockWebServer.url("/").toString(),
fingerprintEndpoint = mockWebServer.url("/").toString(),
Expand Down

0 comments on commit 1a7426b

Please sign in to comment.