@@ -24,6 +24,9 @@ import com.duckduckgo.common.utils.DispatcherProvider
2424import com.duckduckgo.common.utils.plugins.PluginPoint
2525import com.duckduckgo.data.store.api.SharedPreferencesProvider
2626import com.duckduckgo.di.scopes.AppScope
27+ import com.duckduckgo.pir.impl.common.BrokerStepsParser.BrokerStep
28+ import com.duckduckgo.pir.impl.common.BrokerStepsParser.BrokerStep.OptOutStep
29+ import com.duckduckgo.pir.impl.common.BrokerStepsParser.BrokerStep.ScanStep
2730import com.duckduckgo.pir.impl.common.CaptchaResolver
2831import com.duckduckgo.pir.impl.common.NativeBrokerActionHandler
2932import com.duckduckgo.pir.impl.common.RealNativeBrokerActionHandler
@@ -33,6 +36,18 @@ import com.duckduckgo.pir.impl.common.actions.RealPirActionsRunnerStateEngineFac
3336import com.duckduckgo.pir.impl.scripts.BrokerActionProcessor
3437import com.duckduckgo.pir.impl.scripts.PirMessagingInterface
3538import com.duckduckgo.pir.impl.scripts.RealBrokerActionProcessor
39+ import com.duckduckgo.pir.impl.scripts.models.BrokerAction
40+ import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData
41+ import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData.SolveCaptcha
42+ import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData.UserProfile
43+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse
44+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.ClickResponse
45+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.ExpectationResponse
46+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.ExtractedResponse
47+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.FillFormResponse
48+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.GetCaptchaInfoResponse
49+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.NavigateResponse
50+ import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.SolveCaptchaResponse
3651import com.duckduckgo.pir.impl.service.DbpService
3752import com.duckduckgo.pir.impl.store.PirDatabase
3853import com.duckduckgo.pir.impl.store.PirRepository
@@ -48,10 +63,14 @@ import com.duckduckgo.pir.impl.store.db.ScanLogDao
4863import com.duckduckgo.pir.impl.store.db.ScanResultsDao
4964import com.duckduckgo.pir.impl.store.db.UserProfileDao
5065import com.squareup.anvil.annotations.ContributesTo
66+ import com.squareup.moshi.Moshi
67+ import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
68+ import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
5169import dagger.Module
5270import dagger.Provides
5371import dagger.SingleInstanceIn
5472import kotlinx.coroutines.CoroutineScope
73+ import javax.inject.Named
5574
5675@Module
5776@ContributesTo(AppScope ::class )
@@ -145,9 +164,10 @@ class PirModule {
145164 @Provides
146165 fun providesBrokerActionProcessor (
147166 pirMessagingInterface : PirMessagingInterface ,
167+ @Named(" pir" ) moshi : Moshi ,
148168 ): BrokerActionProcessor {
149169 // Creates a new instance everytime is BrokerActionProcessor injected
150- return RealBrokerActionProcessor (pirMessagingInterface)
170+ return RealBrokerActionProcessor (pirMessagingInterface, moshi )
151171 }
152172
153173 @Provides
@@ -176,4 +196,43 @@ class PirModule {
176196 coroutineScope,
177197 )
178198 }
199+
200+ @Provides
201+ @SingleInstanceIn(AppScope ::class )
202+ @Named(" pir" )
203+ fun providePirMoshi (moshi : Moshi ): Moshi {
204+ return moshi.newBuilder()
205+ .add(
206+ PolymorphicJsonAdapterFactory .of(PirScriptRequestData ::class .java, " data" )
207+ .withSubtype(SolveCaptcha ::class .java, " solveCaptcha" )
208+ .withSubtype(UserProfile ::class .java, " userProfile" ),
209+ ).add(
210+ PolymorphicJsonAdapterFactory .of(BrokerAction ::class .java, " actionType" )
211+ .withSubtype(BrokerAction .Extract ::class .java, " extract" )
212+ .withSubtype(BrokerAction .Expectation ::class .java, " expectation" )
213+ .withSubtype(BrokerAction .Click ::class .java, " click" )
214+ .withSubtype(BrokerAction .FillForm ::class .java, " fillForm" )
215+ .withSubtype(BrokerAction .Navigate ::class .java, " navigate" )
216+ .withSubtype(BrokerAction .GetCaptchaInfo ::class .java, " getCaptchaInfo" )
217+ .withSubtype(BrokerAction .SolveCaptcha ::class .java, " solveCaptcha" )
218+ .withSubtype(BrokerAction .EmailConfirmation ::class .java, " emailConfirmation" )
219+ .withSubtype(BrokerAction .Condition ::class .java, " condition" ),
220+ )
221+ .add(
222+ PolymorphicJsonAdapterFactory .of(BrokerStep ::class .java, " stepType" )
223+ .withSubtype(ScanStep ::class .java, " scan" )
224+ .withSubtype(OptOutStep ::class .java, " optOut" ),
225+ ).add(
226+ PolymorphicJsonAdapterFactory .of(PirSuccessResponse ::class .java, " actionType" )
227+ .withSubtype(NavigateResponse ::class .java, " navigate" )
228+ .withSubtype(ExtractedResponse ::class .java, " extract" )
229+ .withSubtype(GetCaptchaInfoResponse ::class .java, " getCaptchaInfo" )
230+ .withSubtype(SolveCaptchaResponse ::class .java, " solveCaptcha" )
231+ .withSubtype(ClickResponse ::class .java, " click" )
232+ .withSubtype(ExpectationResponse ::class .java, " expectation" )
233+ .withSubtype(FillFormResponse ::class .java, " fillForm" ),
234+ )
235+ .add(KotlinJsonAdapterFactory ())
236+ .build()
237+ }
179238}
0 commit comments