Skip to content

Commit cc3b272

Browse files
committed
Improve moshi structure
1 parent 372ac7b commit cc3b272

File tree

3 files changed

+67
-66
lines changed

3 files changed

+67
-66
lines changed

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/common/BrokerStepsParser.kt

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,11 @@ import com.duckduckgo.pir.impl.store.PirRepository
2929
import com.squareup.anvil.annotations.ContributesBinding
3030
import com.squareup.moshi.JsonAdapter
3131
import com.squareup.moshi.Moshi
32-
import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
33-
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
3432
import kotlinx.coroutines.withContext
3533
import logcat.LogPriority.ERROR
3634
import logcat.logcat
3735
import javax.inject.Inject
36+
import javax.inject.Named
3837

3938
interface BrokerStepsParser {
4039
/**
@@ -97,29 +96,10 @@ interface BrokerStepsParser {
9796
class RealBrokerStepsParser @Inject constructor(
9897
private val dispatcherProvider: DispatcherProvider,
9998
private val repository: PirRepository,
99+
@Named("pir") private val moshi: Moshi,
100100
) : BrokerStepsParser {
101101
val adapter: JsonAdapter<BrokerStep> by lazy {
102-
Moshi.Builder()
103-
.add(
104-
PolymorphicJsonAdapterFactory.of(BrokerAction::class.java, "actionType")
105-
.withSubtype(BrokerAction.Extract::class.java, "extract")
106-
.withSubtype(BrokerAction.Expectation::class.java, "expectation")
107-
.withSubtype(BrokerAction.Click::class.java, "click")
108-
.withSubtype(BrokerAction.FillForm::class.java, "fillForm")
109-
.withSubtype(BrokerAction.Navigate::class.java, "navigate")
110-
.withSubtype(BrokerAction.GetCaptchaInfo::class.java, "getCaptchaInfo")
111-
.withSubtype(BrokerAction.SolveCaptcha::class.java, "solveCaptcha")
112-
.withSubtype(BrokerAction.EmailConfirmation::class.java, "emailConfirmation")
113-
.withSubtype(BrokerAction.Condition::class.java, "condition"),
114-
)
115-
.add(
116-
PolymorphicJsonAdapterFactory.of(BrokerStep::class.java, "stepType")
117-
.withSubtype(ScanStep::class.java, "scan")
118-
.withSubtype(OptOutStep::class.java, "optOut"),
119-
)
120-
.add(KotlinJsonAdapterFactory())
121-
.build()
122-
.adapter(BrokerStep::class.java)
102+
moshi.adapter(BrokerStep::class.java)
123103
}
124104

125105
override suspend fun parseStep(

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/di/PirModule.kt

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ import com.duckduckgo.common.utils.DispatcherProvider
2424
import com.duckduckgo.common.utils.plugins.PluginPoint
2525
import com.duckduckgo.data.store.api.SharedPreferencesProvider
2626
import 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
2730
import com.duckduckgo.pir.impl.common.CaptchaResolver
2831
import com.duckduckgo.pir.impl.common.NativeBrokerActionHandler
2932
import com.duckduckgo.pir.impl.common.RealNativeBrokerActionHandler
@@ -33,6 +36,18 @@ import com.duckduckgo.pir.impl.common.actions.RealPirActionsRunnerStateEngineFac
3336
import com.duckduckgo.pir.impl.scripts.BrokerActionProcessor
3437
import com.duckduckgo.pir.impl.scripts.PirMessagingInterface
3538
import 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
3651
import com.duckduckgo.pir.impl.service.DbpService
3752
import com.duckduckgo.pir.impl.store.PirDatabase
3853
import com.duckduckgo.pir.impl.store.PirRepository
@@ -48,10 +63,14 @@ import com.duckduckgo.pir.impl.store.db.ScanLogDao
4863
import com.duckduckgo.pir.impl.store.db.ScanResultsDao
4964
import com.duckduckgo.pir.impl.store.db.UserProfileDao
5065
import 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
5169
import dagger.Module
5270
import dagger.Provides
5371
import dagger.SingleInstanceIn
5472
import 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
}

pir/pir-impl/src/main/java/com/duckduckgo/pir/impl/scripts/BrokerActionProcessor.kt

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,9 @@ import com.duckduckgo.pir.impl.scripts.models.PirError
2828
import com.duckduckgo.pir.impl.scripts.models.PirResult
2929
import com.duckduckgo.pir.impl.scripts.models.PirScriptError
3030
import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData
31-
import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData.SolveCaptcha
32-
import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestData.UserProfile
3331
import com.duckduckgo.pir.impl.scripts.models.PirScriptRequestParams
3432
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse
35-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.ClickResponse
36-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.ExpectationResponse
37-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.ExtractedResponse
38-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.FillFormResponse
39-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.GetCaptchaInfoResponse
40-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.NavigateResponse
41-
import com.duckduckgo.pir.impl.scripts.models.PirSuccessResponse.SolveCaptchaResponse
4233
import com.squareup.moshi.Moshi
43-
import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
44-
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
4534
import logcat.LogPriority.ERROR
4635
import logcat.logcat
4736
import org.json.JSONObject
@@ -74,44 +63,17 @@ interface BrokerActionProcessor {
7463

7564
class RealBrokerActionProcessor(
7665
private val pirMessagingInterface: JsMessaging,
66+
private val moshi: Moshi,
7767
) : BrokerActionProcessor {
7868
private val requestAdapter by lazy {
79-
Moshi.Builder()
80-
.add(
81-
PolymorphicJsonAdapterFactory.of(PirScriptRequestData::class.java, "data")
82-
.withSubtype(SolveCaptcha::class.java, "solveCaptcha")
83-
.withSubtype(UserProfile::class.java, "userProfile"),
84-
).add(
85-
PolymorphicJsonAdapterFactory.of(BrokerAction::class.java, "actionType")
86-
.withSubtype(BrokerAction.Extract::class.java, "extract")
87-
.withSubtype(BrokerAction.Expectation::class.java, "expectation")
88-
.withSubtype(BrokerAction.Click::class.java, "click")
89-
.withSubtype(BrokerAction.FillForm::class.java, "fillForm")
90-
.withSubtype(BrokerAction.Navigate::class.java, "navigate")
91-
.withSubtype(BrokerAction.GetCaptchaInfo::class.java, "getCaptchaInfo")
92-
.withSubtype(BrokerAction.SolveCaptcha::class.java, "solveCaptcha")
93-
.withSubtype(BrokerAction.EmailConfirmation::class.java, "emailConfirmation")
94-
.withSubtype(BrokerAction.Condition::class.java, "condition"),
95-
).add(KotlinJsonAdapterFactory())
96-
.build()
97-
.adapter(PirScriptRequestParams::class.java)
69+
moshi.adapter(PirScriptRequestParams::class.java)
9870
}
9971
private val responseAdapter by lazy {
100-
Moshi.Builder().add(
101-
PolymorphicJsonAdapterFactory.of(PirSuccessResponse::class.java, "actionType")
102-
.withSubtype(NavigateResponse::class.java, "navigate")
103-
.withSubtype(ExtractedResponse::class.java, "extract")
104-
.withSubtype(GetCaptchaInfoResponse::class.java, "getCaptchaInfo")
105-
.withSubtype(SolveCaptchaResponse::class.java, "solveCaptcha")
106-
.withSubtype(ClickResponse::class.java, "click")
107-
.withSubtype(ExpectationResponse::class.java, "expectation")
108-
.withSubtype(FillFormResponse::class.java, "fillForm"),
109-
).add(KotlinJsonAdapterFactory())
110-
.build().adapter(PirResult::class.java)
72+
moshi.adapter(PirResult::class.java)
11173
}
11274

11375
private val errorAdapter by lazy {
114-
Moshi.Builder().build().adapter(PirScriptError::class.java)
76+
moshi.adapter(PirScriptError::class.java)
11577
}
11678

11779
private var registeredActionResultListener: ActionResultListener? = null

0 commit comments

Comments
 (0)