Skip to content

Commit

Permalink
Use AnalyticsRequestV2Executor in Identity SDK
Browse files Browse the repository at this point in the history
  • Loading branch information
tillh-stripe committed Mar 19, 2024
1 parent 1731dc8 commit 4e5e126
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package com.stripe.android.identity.injection

import android.app.Application
import android.content.Context
import android.content.res.Resources
import com.stripe.android.core.Logger
import com.stripe.android.core.networking.AnalyticsRequestV2Executor
import com.stripe.android.core.networking.DefaultAnalyticsRequestV2Executor
import com.stripe.android.core.networking.DefaultStripeNetworkClient
import com.stripe.android.core.networking.StripeNetworkClient
import com.stripe.android.core.utils.IsWorkManagerAvailable
import com.stripe.android.core.utils.RealIsWorkManagerAvailable
import com.stripe.android.identity.BuildConfig
import com.stripe.android.identity.networking.DefaultIdentityModelFetcher
import com.stripe.android.identity.networking.DefaultIdentityRepository
import com.stripe.android.identity.networking.IdentityModelFetcher
Expand All @@ -25,6 +32,11 @@ import javax.inject.Singleton
subcomponents = [IdentityActivitySubcomponent::class]
)
internal abstract class IdentityCommonModule {

@Binds
@Singleton
abstract fun bindsAnalyticsRequestV2Executor(impl: DefaultAnalyticsRequestV2Executor): AnalyticsRequestV2Executor

@Binds
@Singleton
abstract fun bindIdentityIO(defaultIdentityIO: DefaultIdentityIO): IdentityIO
Expand All @@ -46,6 +58,10 @@ internal abstract class IdentityCommonModule {
@Singleton
fun provideResources(context: Context): Resources = context.resources

@Provides
@Singleton
fun provideApplication(context: Context): Application = context.applicationContext as Application

@Provides
@Singleton
fun provideInterpreterInitializer(): InterpreterInitializer = InterpreterInitializerImpl
Expand All @@ -56,6 +72,16 @@ internal abstract class IdentityCommonModule {
@Named(GLOBAL_SCOPE)
fun provideGlobalScope(): CoroutineScope = GlobalScope

@Provides
@Singleton
fun provideLogger(): Logger = Logger.getInstance(BuildConfig.DEBUG)

@Provides
@Singleton
internal fun providesIsWorkManagerAvailable(): IsWorkManagerAvailable {
return RealIsWorkManagerAvailable
}

const val GLOBAL_SCOPE = "GlobalScope"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.stripe.android.identity.networking

import android.content.Context
import android.util.Log
import androidx.annotation.VisibleForTesting
import com.stripe.android.camera.framework.time.Clock
import com.stripe.android.core.exception.APIConnectionException
Expand All @@ -14,6 +13,7 @@ import com.stripe.android.core.model.parsers.ModelJsonParser
import com.stripe.android.core.model.parsers.StripeErrorJsonParser
import com.stripe.android.core.model.parsers.StripeFileJsonParser
import com.stripe.android.core.networking.AnalyticsRequestV2
import com.stripe.android.core.networking.AnalyticsRequestV2Executor
import com.stripe.android.core.networking.ApiRequest
import com.stripe.android.core.networking.StripeNetworkClient
import com.stripe.android.core.networking.StripeRequest
Expand All @@ -34,7 +34,8 @@ import javax.inject.Inject
internal class DefaultIdentityRepository @Inject constructor(
private val stripeNetworkClient: StripeNetworkClient,
private val identityIO: IdentityIO,
private val context: Context
private val context: Context,
private val analyticsRequestExecutor: AnalyticsRequestV2Executor,
) : IdentityRepository {

@VisibleForTesting
Expand Down Expand Up @@ -239,11 +240,7 @@ internal class DefaultIdentityRepository @Inject constructor(
)

override suspend fun sendAnalyticsRequest(analyticsRequestV2: AnalyticsRequestV2) {
runCatching {
stripeNetworkClient.executeRequest(analyticsRequestV2)
}.onFailure {
Log.e(TAG, "Exception while making analytics request")
}
analyticsRequestExecutor.enqueue(analyticsRequestV2)
}

private suspend fun <Response> executeRequestWithKSerializer(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.stripe.android.core.model.Country
import com.stripe.android.core.model.CountryCode
import com.stripe.android.core.model.StripeFile
import com.stripe.android.core.model.parsers.StripeErrorJsonParser
import com.stripe.android.core.networking.AnalyticsRequestV2Executor
import com.stripe.android.core.networking.ApiRequest
import com.stripe.android.core.networking.HEADER_AUTHORIZATION
import com.stripe.android.core.networking.StripeNetworkClient
Expand Down Expand Up @@ -46,10 +47,12 @@ class DefaultIdentityRepositoryTest {
whenever(it.createTFLiteFile(any())).thenReturn(mock())
}
private val mockStripeNetworkClient: StripeNetworkClient = mock()
private val fakeAnalyticsRequestExecutor: AnalyticsRequestV2Executor = mock()
private val identityRepository = DefaultIdentityRepository(
mockStripeNetworkClient,
mockIO,
ApplicationProvider.getApplicationContext()
ApplicationProvider.getApplicationContext(),
fakeAnalyticsRequestExecutor,
)

private val requestCaptor: KArgumentCaptor<StripeRequest> = argumentCaptor()
Expand Down

0 comments on commit 4e5e126

Please sign in to comment.