Skip to content
Snippets Groups Projects
Unverified Commit f0ea5d63 authored by Thomas Klingbeil's avatar Thomas Klingbeil Committed by GitHub
Browse files

Set diagnosis key risk level based on day (#146)

* apply risk level to diagnosis keys based on day from static vector
* day 0 is „today“, which is not available right away from the framework.
parent 9da617ec
No related branches found
No related tags found
No related merge requests found
......@@ -9,18 +9,44 @@ object ProtoFormatConverterExtensions {
private const val ROLLING_PERIOD = 144
private const val DEFAULT_TRANSMISSION_RISK_LEVEL = 1
private const val TRANSMISSION_RISK_DAY_0 = 5
private const val TRANSMISSION_RISK_DAY_1 = 6
private const val TRANSMISSION_RISK_DAY_2 = 7
private const val TRANSMISSION_RISK_DAY_3 = 8
private const val TRANSMISSION_RISK_DAY_4 = 7
private const val TRANSMISSION_RISK_DAY_5 = 5
private const val TRANSMISSION_RISK_DAY_6 = 3
private const val TRANSMISSION_RISK_DAY_7 = 2
private val DEFAULT_TRANSMISSION_RISK_VECTOR = intArrayOf(
TRANSMISSION_RISK_DAY_0,
TRANSMISSION_RISK_DAY_1,
TRANSMISSION_RISK_DAY_2,
TRANSMISSION_RISK_DAY_3,
TRANSMISSION_RISK_DAY_4,
TRANSMISSION_RISK_DAY_5,
TRANSMISSION_RISK_DAY_6,
TRANSMISSION_RISK_DAY_7)
private const val MAXIMUM_KEYS = 14
fun List<TemporaryExposureKey>.limitKeyCount() =
this.sortedWith(compareBy({ it.rollingStartIntervalNumber })).asReversed().take(MAXIMUM_KEYS)
this.sortedWith(compareBy { it.rollingStartIntervalNumber }).asReversed().take(MAXIMUM_KEYS)
fun List<TemporaryExposureKey>.transformKeyHistoryToExternalFormat() = this.map {
KeyExportFormat.TemporaryExposureKey.newBuilder()
.setKeyData(ByteString.readFrom(it.keyData.inputStream()))
.setRollingStartIntervalNumber(it.rollingStartIntervalNumber)
.setRollingPeriod(ROLLING_PERIOD)
.setTransmissionRiskLevel(DEFAULT_TRANSMISSION_RISK_LEVEL)
.build()
fun List<TemporaryExposureKey>.transformKeyHistoryToExternalFormat() =
this.sortedWith(compareBy { it.rollingStartIntervalNumber })
.mapIndexed { index, it ->
// The earliest key we receive is from yesterday (i.e. 1 day ago),
// thus we need use index+1
val riskValue =
if (index + 1 <= DEFAULT_TRANSMISSION_RISK_VECTOR.lastIndex)
DEFAULT_TRANSMISSION_RISK_VECTOR[index + 1]
else
DEFAULT_TRANSMISSION_RISK_LEVEL
KeyExportFormat.TemporaryExposureKey.newBuilder()
.setKeyData(ByteString.readFrom(it.keyData.inputStream()))
.setRollingStartIntervalNumber(it.rollingStartIntervalNumber)
.setRollingPeriod(ROLLING_PERIOD)
.setTransmissionRiskLevel(riskValue)
.build()
}
fun AppleLegacyKeyExchange.Key.convertToGoogleKey(): KeyExportFormat.TemporaryExposureKey =
......
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