Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <returns></returns>
        public IExternalResult UploadFile(FileInfo source, string destination)
        {
            using (var _source = source.OpenRead())
            {
                if (_source.CanRead)
                {
                    var _resource = new Uri(string.Format("{0}/{1}", Host, destination));
                    var _request  = CreateRequest(_resource, WebRequestMethods.Ftp.UploadFile);

                    using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false, _source))
                    {
                        _context.BeginGetRequestStream(x => AsyncGetRequestStreamCallback(x));

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

                        return(_context.Result);
                    }
                }

                _source.Dispose();
            }

            return(new FtpResult());
        }
Exemple #2
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 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="source"></param>
        /// <param name="destination"></param>
        /// <param name="userToken"></param>
        public void UploadFileAsync(FileInfo source, string destination, object userToken)
        {
            var _fileStream = source.OpenRead();

            if (_fileStream.CanRead)
            {
                var _resource = new Uri(string.Format("{0}/{1}", Host, destination));
                var _request  = CreateRequest(_resource, WebRequestMethods.Ftp.UploadFile);
                var _context  = new ExternalActionContext(_request, true, BUFFER_SIZE, false, _fileStream, userToken);

                _context.BeginGetRequestStream(x => AsyncGetRequestStreamCallback(x));
            }
        }
Exemple #4
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 #5
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 #6
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 #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="ex"></param>
        void HandleThrownException(ExternalActionContext context, Exception ex)
        {
            context.Result = FtpResult.Parse(ex);

            if (null != context)
            {
                context.Dispose();
            }

            if (null != _waitHandle)
            {
                _waitHandle.Set();
            }

            RaiseActionFailedEvent(context);
        }
Exemple #8
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());
        }
Exemple #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        void RaiseActionProgressChangedEvent(ExternalActionContext context)
        {
            if (context.IsAsync)
            {
                if (WebRequestMethods.Ftp.UploadFile.Equals(context.Method))
                {
                    if (null != UploadProgressChanged)
                    {
                        var _args = new ExternalUploadProgressChangedEventArgs(context);

                        UploadProgressChanged(this, _args);
                    }
                }
                else if (WebRequestMethods.Ftp.DownloadFile.Equals(context.Method))
                {
                    if (null != DownloadProgressChanged)
                    {
                        var _args = new ExternalDownloadProgressChangedEventArgs(context);

                        DownloadProgressChanged(this, _args);
                    }
                }
            }
        }