Skip to content
Snippets Groups Projects
Unverified Commit 4ef81342 authored by Kolya Opahle's avatar Kolya Opahle Committed by GitHub
Browse files

Implement Donor for User Metadata (EXPOSUREAPP-4823) (#2300)


* Switched protobuf container to builder to allow for instantiation
added UserMetadataDonor

Signed-off-by: default avatarKolya Opahle <k.opahle@sap.com>

* Update UserMetadataDonor.kt
parent 7ba533cb
No related branches found
No related tags found
No related merge requests found
...@@ -21,7 +21,7 @@ interface DonorModule { ...@@ -21,7 +21,7 @@ interface DonorModule {
/** /**
* You will be passed a protobuf container where the module will add it's data * You will be passed a protobuf container where the module will add it's data
*/ */
suspend fun injectData(protobufContainer: PpaData.PPADataAndroid) suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder)
/** /**
* This will be called with the submission result. * This will be called with the submission result.
......
...@@ -57,7 +57,7 @@ class ExposureRiskMetadataDonor @Inject constructor( ...@@ -57,7 +57,7 @@ class ExposureRiskMetadataDonor @Inject constructor(
val contributionProto: PpaData.ExposureRiskMetadata, val contributionProto: PpaData.ExposureRiskMetadata,
val onContributionFinished: suspend (Boolean) -> Unit val onContributionFinished: suspend (Boolean) -> Unit
) : DonorModule.Contribution { ) : DonorModule.Contribution {
override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid) { override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
protobufContainer.exposureRiskMetadataSetList.add(contributionProto) protobufContainer.exposureRiskMetadataSetList.add(contributionProto)
} }
......
...@@ -21,7 +21,7 @@ class NewExposureWindowsDonor @Inject constructor() : DonorModule { ...@@ -21,7 +21,7 @@ class NewExposureWindowsDonor @Inject constructor() : DonorModule {
val protobuf: Any, val protobuf: Any,
val onContributionFinished: suspend (Boolean) -> Unit val onContributionFinished: suspend (Boolean) -> Unit
) : DonorModule.Contribution { ) : DonorModule.Contribution {
override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid) { override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
// TODO "Add this specific protobuf to the top level protobuf container" // TODO "Add this specific protobuf to the top level protobuf container"
} }
......
...@@ -11,7 +11,7 @@ class KeySubmissionStateDonor @Inject constructor() : DonorModule { ...@@ -11,7 +11,7 @@ class KeySubmissionStateDonor @Inject constructor() : DonorModule {
override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution { override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
// TODO // TODO
return object : DonorModule.Contribution { return object : DonorModule.Contribution {
override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid) { override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
// TODO // TODO
} }
......
...@@ -11,7 +11,7 @@ class RegisteredTestDonor @Inject constructor() : DonorModule { ...@@ -11,7 +11,7 @@ class RegisteredTestDonor @Inject constructor() : DonorModule {
override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution { override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
// TODO // TODO
return object : DonorModule.Contribution { return object : DonorModule.Contribution {
override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid) { override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
// TODO // TODO
} }
......
package de.rki.coronawarnapp.datadonation.analytics.modules.usermetadata
import de.rki.coronawarnapp.datadonation.analytics.AnalyticsSettings
import de.rki.coronawarnapp.datadonation.analytics.modules.DonorModule
import de.rki.coronawarnapp.server.protocols.internal.ppdd.PpaData
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class UserMetadataDonor @Inject constructor(
private val analyticsSettings: AnalyticsSettings
) : DonorModule {
override suspend fun beginDonation(request: DonorModule.Request): DonorModule.Contribution {
val userMetadata = PpaData.PPAUserMetadata.newBuilder()
.setAgeGroup(analyticsSettings.userInfoAgeGroup.value)
.setFederalState(analyticsSettings.userInfoFederalState.value)
.setAdministrativeUnit(analyticsSettings.userInfoDistrict.value)
.build()
return UserMetadataContribution(
contributionProto = userMetadata
)
}
data class UserMetadataContribution(
val contributionProto: PpaData.PPAUserMetadata
) : DonorModule.Contribution {
override suspend fun injectData(protobufContainer: PpaData.PPADataAndroid.Builder) {
protobufContainer.userMetadata = contributionProto
}
override suspend fun finishDonation(successful: Boolean) {
// No post processing needed for User Metadata
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment