Пример #1
0
            public async Task <IEnumerable <FtpMetadata> > GetMetadata(FtpFilter filter, CancellationToken ctk = default)
            {
                IEnumerable <FtpMetadata> res = new FtpMetadata[0];

                using (var cts1 = new CancellationTokenSource(_config.ListingTimeout))
                    using (var cts2 = CancellationTokenSource.CreateLinkedTokenSource(cts1.Token, ctk))
                    {
                        foreach (var f in filter.FoldersToWatch)
                        {
                            var list = await _ftpClient.ListFilesRecursiveAsync(f, x => filter.FolderFilter?.Invoke(x.FullPath) == false, ctk : cts2.Token).ConfigureAwait(false);

                            res = res.Concat(list.Select(e => new FtpMetadata(e)));
                        }
                        return(res.ToList());
                    }
            }