public ChangedStateContext(IResourceMetadata info, IResourceTrackedState lastState, AsyncLazy <T> payload) { EnsureArg.IsNotNull(info); EnsureArg.IsNotNull(payload); Info = info; Payload = payload; LastState = lastState; }
public Task <Test_File> GetResource(Test_FileMetadataDto metadata, IResourceTrackedState lastState, CancellationToken ctk = default) { return(Task.Run(() => { var downloadedFile = new Test_File(metadata) { DownloadedAt = SystemClock.Instance.GetCurrentInstant(), }; _logger.Info($"File {downloadedFile.Metadata.FileName} downloaded successfully"); return downloadedFile; })); }
public async Task <FtpFile <TPayload> > GetResource(FtpMetadata metadata, IResourceTrackedState lastState, CancellationToken ctk = default) { var contents = await Policy .Handle <Exception>() .RetryAsync(3) .ExecuteAsync(async ct => { using (var cts1 = new CancellationTokenSource(_config.DownloadTimeout)) using (var cts2 = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, ct)) { return(await _ftpClient.DownloadFileAsync(metadata.Entry.FullPath, ctk: cts2.Token)); } }, ctk); var checksum = _computeChecksum(contents); if (lastState?.CheckSum == checksum) { return(null); } var file = new FtpFile <TPayload>(metadata) { CheckSum = checksum, RetrievedAt = SystemClock.Instance.GetCurrentInstant(), ParsedData = _parser.Parse(metadata, contents) }; return(file); }
protected abstract Task <T> _retrievePayload(IResourceMetadata info, IResourceTrackedState lastState, CancellationToken ctk = default);
protected override Task <TResource> _retrievePayload(IResourceMetadata info, IResourceTrackedState lastState, CancellationToken ctk = default) { return(_container.GetInstance <IResourceProvider <TMetadata, TResource, TQueryFilter> >().GetResource(info as TMetadata, lastState, ctk)); }
public async Task <SkyScanner_File> GetResource(SkyScanner_FileMetadataDto metadata, IResourceTrackedState lastState, CancellationToken ctk = default) { var rawData = await retrier.Execute(async() => { return(await _getRawData(metadata)); }); if (rawData == null) { return(null); } var checkSum = _getCheckSumMD5(rawData); if (lastState?.CheckSum == checkSum) { return(null); } var parsedFile = _parser.Parse(metadata, rawData); parsedFile.CheckSum = checkSum; parsedFile.DownloadedAt = SystemClock.Instance.GetCurrentInstant(); return(parsedFile); }