Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="userToken"></param>
        public void DownloadFileAsync(string source, FileStream destination, object userToken)
        {
            if (destination.CanWrite)
            {
                var _resource = new Uri(string.Format("{0}/{1}", Host, source));
                var _length   = GetContentLength(_resource);
                var _request  = CreateRequest(_resource, WebRequestMethods.Ftp.DownloadFile);
                var _context  = new ExternalActionContext(_request, true, BUFFER_SIZE, destination, userToken, _length);

                _context.BeginGetResponse(x => AsyncGetResponseCallback(x));
            }
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        long GetContentLength(Uri source)
        {
            var _request = CreateRequest(source, WebRequestMethods.Ftp.GetFileSize);

            using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false))
            {
                _context.BeginGetResponse(x => AsyncGetResponseCallback(x));

                _waitHandle.WaitOne();
                _waitHandle.Reset();

                return(_context.ContentLength);
            }
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public bool ExistDirectory(string path)
        {
            var _resource = new Uri(string.Format("{0}/{1}", Host, path));
            var _request  = CreateRequest(_resource, WebRequestMethods.Ftp.ListDirectory);

            using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false))
            {
                _context.BeginGetResponse(x => AsyncGetResponseCallback(x));

                _waitHandle.WaitOne();
                _waitHandle.Reset();

                return(!(_context.Result as FtpResult).ErrorCode.Equals(FtpStatusCode.ActionNotTakenFileUnavailable));
            }
        }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public IExternalResult CreateDirectory(string path)
        {
            var _resource = new Uri(string.Format("{0}/{1}", Host, path));
            var _request  = CreateRequest(_resource, WebRequestMethods.Ftp.MakeDirectory);

            using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false))
            {
                _context.BeginGetResponse(x => AsyncGetResponseCallback(x));

                _waitHandle.WaitOne();
                _waitHandle.Reset();

                return(_context.Result);
            }
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <returns></returns>
        public IExternalResult DownloadFile(string source, FileStream destination)
        {
            if (destination.CanWrite)
            {
                var _resource = new Uri(string.Format("{0}/{1}", Host, source));
                var _length   = GetContentLength(_resource);
                var _request  = CreateRequest(_resource, WebRequestMethods.Ftp.DownloadFile);

                using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, destination, null, _length))
                {
                    _context.BeginGetResponse(x => AsyncGetResponseCallback(x));

                    _waitHandle.WaitOne();
                    _waitHandle.Reset();

                    return(_context.Result);
                }
            }

            return(new FtpResult());
        }