private async static Task<List<DeviceTelemetrySummaryModel>> LoadBlobTelemetrySummaryModelsAsync( CloudBlockBlob blob) { Debug.Assert(blob != null, "blob is a null reference."); var models = new List<DeviceTelemetrySummaryModel>(); TextReader reader = null; MemoryStream stream = null; try { stream = new MemoryStream(); await blob.DownloadToStreamAsync(stream); stream.Position = 0; reader = new StreamReader(stream); IEnumerable<StrDict> strdicts = ParsingHelper.ParseCsv(reader).ToDictionaries(); DeviceTelemetrySummaryModel model; double number; string str; foreach (StrDict strdict in strdicts) { model = new DeviceTelemetrySummaryModel(); if (strdict.TryGetValue("deviceid", out str)) { model.DeviceId = str; } if (strdict.TryGetValue("averagehumidity", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.AverageHumidity = number; } if (strdict.TryGetValue("maxhumidity", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.MaximumHumidity = number; } if (strdict.TryGetValue("minimumhumidity", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.MinimumHumidity = number; } if (strdict.TryGetValue("timeframeminutes", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.TimeFrameMinutes = number; } // Translate LastModified to local time zone. DateTimeOffsets // don't do this automatically. This is for equivalent behavior // with parsed DateTimes. if ((blob.Properties != null) && blob.Properties.LastModified.HasValue) { model.Timestamp = blob.Properties.LastModified.Value.LocalDateTime; } models.Add(model); } } finally { IDisposable disp; if ((disp = stream) != null) { disp.Dispose(); } if ((disp = reader) != null) { disp.Dispose(); } } return models; }
private static List<DeviceTelemetrySummaryModel> LoadBlobTelemetrySummaryModels(Stream stream, DateTime? lastModifiedTime) { Debug.Assert(stream != null, "stream is a null reference."); var models = new List<DeviceTelemetrySummaryModel>(); TextReader reader = null; try { stream.Position = 0; reader = new StreamReader(stream); IEnumerable<StrDict> strdicts = ParsingHelper.ParseCsv(reader).ToDictionaries(); DeviceTelemetrySummaryModel model; double number; string str; foreach (StrDict strdict in strdicts) { model = new DeviceTelemetrySummaryModel(); if (strdict.TryGetValue("deviceid", out str)) { model.DeviceId = str; } if (strdict.TryGetValue("averagehumidity", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.AverageHumidity = number; } if (strdict.TryGetValue("maxhumidity", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.MaximumHumidity = number; } if (strdict.TryGetValue("minimumhumidity", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.MinimumHumidity = number; } if (strdict.TryGetValue("timeframeminutes", out str) && double.TryParse( str, NumberStyles.Float, CultureInfo.InvariantCulture, out number)) { model.TimeFrameMinutes = number; } model.Timestamp = lastModifiedTime; models.Add(model); } } finally { IDisposable disp; if ((disp = stream) != null) { disp.Dispose(); } if ((disp = reader) != null) { disp.Dispose(); } } return models; }
private async static Task<List<DeviceTelemetrySummaryModel>> LoadBlobTelemetrySummaryModelsAsync( CloudBlockBlob blob) { IDisposable disp; IEnumerable<StrDict> strdicts; DeviceTelemetrySummaryModel model; List<DeviceTelemetrySummaryModel> models; double number; TextReader reader; string str; MemoryStream stream; Debug.Assert(blob != null, "blob is a null reference."); models = new List<DeviceTelemetrySummaryModel>(); reader = null; stream = null; try { stream = new MemoryStream(); await blob.DownloadToStreamAsync(stream); stream.Position = 0; reader = new StreamReader(stream); strdicts = ParsingHelper.ParseCsv(reader).ToDictionaries(); foreach (StrDict strdict in strdicts) { model = new DeviceTelemetrySummaryModel(); if (strdict.TryGetValue("deviceid", out str)) { model.DeviceId = str; } if (strdict.TryGetValue("averagehumidity", out str) && double.TryParse(str, out number)) { model.AverageHumidity = number; } if (strdict.TryGetValue("maxhumidity", out str) && double.TryParse(str, out number)) { model.MaximumHumidity = number; } if (strdict.TryGetValue("minimumhumidity", out str) && double.TryParse(str, out number)) { model.MinimumHumidity = number; } if (strdict.TryGetValue("timeframeminutes", out str) && double.TryParse(str, out number)) { model.TimeFrameMinutes = number; } if ((blob.Properties != null) && blob.Properties.LastModified.HasValue) { model.Timestamp = blob.Properties.LastModified.Value.UtcDateTime; } models.Add(model); } } finally { if ((disp = stream) != null) { disp.Dispose(); } if ((disp = reader) != null) { disp.Dispose(); } } return models; }