public void ReadsFromSpecificZipEntry() { var source = Path.Combine("TestData", "multizip.zip"); const string entryName = "multizip/three.txt"; using (var reader = new LocalFileSubscriptionStreamReader(source, entryName)) { var line = reader.ReadLine(); Assert.AreEqual("3", line); } }
/// <summary> /// Reads the specified <paramref name="source"/> /// </summary> /// <param name="source">The source to be read</param> /// <returns>An <see cref="IEnumerable{BaseData}"/> that contains the data in the source</returns> public IEnumerable<BaseData> Read(SubscriptionDataSource source) { IStreamReader reader = null; var instances = new BaseDataCollection(); try { switch (source.TransportMedium) { default: case SubscriptionTransportMedium.Rest: reader = new RestSubscriptionStreamReader(source.Source); break; case SubscriptionTransportMedium.LocalFile: reader = new LocalFileSubscriptionStreamReader(source.Source); break; case SubscriptionTransportMedium.RemoteFile: reader = new RemoteFileSubscriptionStreamReader(source.Source, Globals.Cache); break; } var raw = ""; try { raw = reader.ReadLine(); var result = _factory.Reader(_config, raw, _date, _isLiveMode); instances = result as BaseDataCollection; if (instances == null) { OnInvalidSource(source, new Exception("Reader must generate a BaseDataCollection with the FileFormat.Collection")); } } catch (Exception err) { OnReaderError(raw, err); } foreach (var instance in instances.Data) { yield return instance; } } finally { if (reader != null) reader.Dispose(); } }