Example #1
0
        /// <summary>
        /// List all entries of a folder.
        /// </summary>
        /// <param name="path">The folder path to list</param>
        /// <param name="ctk"></param>
        /// <returns>
        /// All entries found (files, folders, symlinks)
        /// </returns>
        public async Task <IEnumerable <FtpEntry> > ListDirectoryAsync(string path = "./", CancellationToken ctk = default(CancellationToken))
        {
            await Task.Yield();

            var ftpPath = path.GetFtpPath();

            _logger.Trace("Listing directory: {0} -> {1}", path, ftpPath);

            using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(5)))
                using (var linked = CancellationTokenSource.CreateLinkedTokenSource(ctk, cts.Token))
                {
                    var result = new List <FtpEntry>();

                    using (var sFtpClient = new Renci.SshNet.SftpClient(new ConnectionInfo(Host, Port, Credentials.UserName, new PasswordAuthenticationMethod(Credentials.UserName, Credentials.Password))))
                    {
                        sFtpClient.Connect();
                        var rawLs = await sFtpClient.ListDirectoryAsync(path);

                        _logger.Trace("Starting parsing response for path {0}", path);
                        result = _parse(rawLs, linked.Token);
                    }

                    linked.Token.ThrowIfCancellationRequested();

                    return(result);
                }
        }
Example #2
0
        /// <summary>
        /// List all entries of a folder.
        /// </summary>
        /// <param name="path">The folder path to list</param>
        /// <param name="ctk"></param>
        /// <returns>
        /// All entries found (files, folders, symlinks)
        /// </returns>
        public override async Task <IEnumerable <FtpEntry> > ListDirectoryAsync(string path = "./", CancellationToken ctk = default(CancellationToken))
        {
            await _ensureConnected(ctk);

            var rawLs = await _client.ListDirectoryAsync(path);

            _logger.Trace("Starting parsing response for path {0}", path);
            return(_parse(rawLs));
        }
Example #3
0
        public override async Task <IEnumerable <ClientItem> > GetFileListing(string path)
        {
            try
            {
                var list = await _sftpc.ListDirectoryAsync(path);

                return(Array.ConvertAll(list.ToArray(), ConvertItem));
            }
            catch (SftpPermissionDeniedException ex)
            {
                throw new PermissionDeniedException(ex);
            }
        }