protected override IRetrievalResult <IEnumerable <TRecord>, IRetrievalMetadata, ParserContext> OnRetrieve(ParserContext context) { context = Arguments.EnsureNotNull(context, nameof(context)); var metadata = new RetrievalMetadata { Endpoint = context.Path.ToString(), }; try { using (var stream = this.CreateStream(context)) { this.ParseStream(stream); } metadata.Rows = this.Records.Count(); foreach (var field in this.FieldHeaders()) { metadata.AddField(field); } } catch (Exception ex) { metadata.Exception = ex; } metadata.EndTime = DateTimeOffset.Now; var retrieval = new RetrievalResult <IEnumerable <TRecord>, RetrievalMetadata, ParserContext>(this.Records, metadata, context); return(retrieval); }
private bool IsDownloadRequired(IDataLoadEventListener listener) { if (!IsDownloadPermitted()) { _retrievalResult = RetrievalResult.NotPermitted; return(false); } if (_cacheProgressItems == null) { listener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "No cache progress provided so nothing to download.")); _retrievalResult = RetrievalResult.Complete; return(false); } return(true); }