public static AirQualityData ParseData(ILogger logger, AqicnResult data, string stationCode) { return(new AirQualityData { Date = data.Data.Time.Iso.DateTime, NO2 = data.Data.Iaqi.No2?.V, O3 = data.Data.Iaqi.O3?.V, PM10 = data.Data.Iaqi.Pm10?.V, SO2 = data.Data.Iaqi.So2?.V, }); }
public async Task <AirQualityData> GetIndexAsync(string locationId, CancellationToken ct) { var result = await cache.GetOrCreateAsync(CacheKeys.SabreData, async ce => { logger.LogInformation("Starting retrieving SABRE data"); try { AqicnResult data = await GetDataAsync(ct); ce.SetAbsoluteExpiration(TimeSpan.FromMinutes(5)); return(ParseData(logger, data, locationId)); } catch (Exception ex) { logger.LogError(ex, "Failed retrieving data for some reason"); throw; } }); return(result); }