Example #1
0
 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,
     });
 }
Example #2
0
    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);
    }