// === Methods used only in EN API v2 === public Task <DailySummaryConfiguration> GetDailySummaryConfigurationAsync() { Debug.WriteLine("Fetching DailySummaryConfiguration"); return(Task.Run(async() => { DailySummaryConfiguration dsc = await _exposureNotificationWebService.GetDailySummaryConfiguration(); if (dsc == null) { throw new FailedToFetchConfigurationException( "Aborting pull because configuration was not fetched from server. See corresponding server error log"); } // On iOS double-type weights represent percents, so we need to multiply by 100 if (DeviceInfo.Platform == DevicePlatform.iOS) { dsc.AttenuationWeights[DistanceEstimate.Immediate] *= 100; dsc.AttenuationWeights[DistanceEstimate.Medium] *= 100; dsc.AttenuationWeights[DistanceEstimate.Near] *= 100; dsc.AttenuationWeights[DistanceEstimate.Other] *= 100; dsc.InfectiousnessWeights[Infectiousness.Standard] *= 100; dsc.InfectiousnessWeights[Infectiousness.High] *= 100; dsc.ReportTypeWeights[ReportType.Recursive] *= 100; dsc.ReportTypeWeights[ReportType.ConfirmedTest] *= 100; dsc.ReportTypeWeights[ReportType.SelfReported] *= 100; dsc.ReportTypeWeights[ReportType.ConfirmedClinicalDiagnosis] *= 100; } string jsonConfiguration = JsonConvert.SerializeObject(dsc); ServiceLocator.Current.GetInstance <IDeveloperToolsService>().LastUsedConfiguration = $"V2 config. Time used (UTC): {DateTime.UtcNow.ToGreGorianUtcString("yyyy-MM-dd HH:mm:ss")}\n{jsonConfiguration}"; return dsc; })); }
// Consider: Displaying the exposure configuration in the activities. public async Task <string> FetchExposureConfigurationAsync() { try { DailySummaryConfiguration dsc = await new ExposureNotificationHandler().GetDailySummaryConfigurationAsync(); string result = $"AttenuationThresholds: {ENConfArrayString(dsc.AttenuationThresholds)}\n " + $"AttenuationWeights: {ENConfDictionaryString(dsc.AttenuationWeights)} \n" + $"DaysSinceLastExposureThreshold: {dsc.DaysSinceLastExposureThreshold} \n" + $"DaysSinceOnsetInfectiousness: {ENConfDictionaryString(dsc.DaysSinceOnsetInfectiousness)} \n" + $"DefaultInfectiousness: {dsc.DefaultInfectiousness}\n" + $"DefaultReportType: {dsc.DefaultReportType}\n" + $"InfectiousnessWeights: {ENConfDictionaryString(dsc.InfectiousnessWeights)}\n" + $"ReportTypeWeights: {ENConfDictionaryString(dsc.ReportTypeWeights)}\n"; DevToolsOutput = result; } catch (InvalidOperationException) { EN.Configuration c = await new ExposureNotificationHandler().GetConfigurationAsync(); string result = $" AttenuationWeight: {c.AttenuationWeight}, Values: {ENConfArrayString(c.AttenuationScores)} \n" + $" DaysSinceLastExposureWeight: {c.DaysSinceLastExposureWeight}, Values: {ENConfArrayString(c.DaysSinceLastExposureScores)} \n" + $" DurationWeight: {c.DurationWeight}, Values: {ENConfArrayString(c.DurationScores)} \n" + $" TransmissionWeight: {c.TransmissionWeight}, Values: {ENConfArrayString(c.TransmissionRiskScores)} \n" + $" MinimumRiskScore: {c.MinimumRiskScore}" + $" DurationAtAttenuationThresholds: [{c.DurationAtAttenuationThresholds[0]},{c.DurationAtAttenuationThresholds[1]}]"; Debug.WriteLine("Exposure Configuration:"); Debug.WriteLine($" AttenuationWeight: {c.AttenuationWeight}, Values: {ENConfArrayString(c.AttenuationScores)}"); Debug.WriteLine($" DaysSinceLastExposureWeight: {c.DaysSinceLastExposureWeight}, Values: {ENConfArrayString(c.DaysSinceLastExposureScores)}"); Debug.WriteLine($" DurationWeight: {c.DurationWeight}, Values: {ENConfArrayString(c.DurationScores)}"); Debug.WriteLine($" TransmissionWeight: {c.TransmissionWeight}, Values: {ENConfArrayString(c.TransmissionRiskScores)}"); Debug.WriteLine($" MinimumRiskScore: {c.MinimumRiskScore}"); DevToolsOutput = result; } DevToolUpdateOutput?.Invoke(); await _clipboard.SetTextAsync(DevToolsOutput); return(DevToolsOutput); }