BetterCms.Core.Services.Storage.FtpStorageService.ObjectExists C# (CSharp) Метод

ObjectExists() публичный Метод

public ObjectExists ( Uri uri ) : bool
uri System.Uri
Результат bool
        public bool ObjectExists(Uri uri)
        {
            CheckUri(uri);

            try
            {
                var absolutePath = ResolvePath(uri.AbsoluteUri);
                var serverUri = string.Format("{0}{1}", ftpRoot, absolutePath);
                var ftpRequest = CreateFtpRequest(serverUri);
                ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp;

                try
                {
                    var response = (FtpWebResponse)ftpRequest.GetResponse();
                    response.Close();
                    return true;
                }
                catch (WebException ex)
                {
                    var response = (FtpWebResponse)ex.Response;
                    var statusCode = response.StatusCode;
                    response.Close();
                    if (statusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
                    {
                        return false;
                    }
                    throw;
                }
            }
            catch (Exception e)
            {
                throw new StorageException(string.Format("Failed to check if object exists under {0}.", uri), e);
            }
        }

Usage Example

Пример #1
0
        public void Should_Throw_StorageException_If_Given_Uri_Is_Not_Of_File_Scheme()
        {
            Mock<ICmsConfiguration> cmsConfigurationMock = new Mock<ICmsConfiguration>();
            Mock<ICmsStorageConfiguration> storageConfigurationMock = new Mock<ICmsStorageConfiguration>();

            cmsConfigurationMock.Setup(f => f.Storage).Returns(storageConfigurationMock.Object);
            storageConfigurationMock.Setup(f => f.ContentRoot).Returns("ftp://test.ftp.com/cms/content");
            storageConfigurationMock.Setup(f => f.ServiceType).Returns(StorageServiceType.Ftp);
            storageConfigurationMock.Setup(f => f.GetValue(It.Is<string>(s => s == "FtpRoot"))).Returns("ftp://test.ftp.com");
            storageConfigurationMock.Setup(f => f.GetValue(It.Is<string>(s => s == "FtpUserName"))).Returns("*****@*****.**");
            storageConfigurationMock.Setup(f => f.GetValue(It.Is<string>(s => s == "FtpPassword"))).Returns("psw123");
            storageConfigurationMock.Setup(f => f.GetValue(It.Is<string>(s => s == "UsePassiveMode"))).Returns("true");

            Uri httpUri = new Uri("http://www.google.com");
            FtpStorageService storageService = new FtpStorageService(cmsConfigurationMock.Object);

            var ex1 = Assert.Throws<StorageException>(() => storageService.ObjectExists(httpUri));
            var ex2 = Assert.Throws<StorageException>(() => storageService.CopyObject(httpUri, httpUri));
            var ex3 = Assert.Throws<StorageException>(() => storageService.DownloadObject(httpUri));
            var ex4 = Assert.Throws<StorageException>(() => storageService.UploadObject(new UploadRequest { Uri = httpUri }));

            Assert.IsTrue(ex1.Message.StartsWith("An Uri scheme") && ex1.Message.Contains("can't be processed with a"));
            Assert.IsTrue(ex2.Message.StartsWith("An Uri scheme") && ex1.Message.Contains("can't be processed with a"));
            Assert.IsTrue(ex3.Message.StartsWith("An Uri scheme") && ex1.Message.Contains("can't be processed with a"));
            Assert.IsTrue(ex4.Message.StartsWith("An Uri scheme") && ex1.Message.Contains("can't be processed with a"));
        }
All Usage Examples Of BetterCms.Core.Services.Storage.FtpStorageService::ObjectExists