Example #1
0
        public async void When_RequestIsSuccessfull_Should_ReturnStatusCode200()
        {
            var client = new WebDavClient().SetWebDavDispatcher(Dispatcher.Mock());
            var response1 = await client.Move("http://example.com/old", "http://example.com/new");
            var response2 = await client.Move(new Uri("http://example.com/old"), new Uri("http://example.com/new"));
            var response3 = await client.Move("http://example.com/old", "http://example.com/new", new MoveParameters());
            var response4 = await client.Move(new Uri("http://example.com/old"), new Uri("http://example.com/new"), new MoveParameters());

            Assert.Equal(200, response1.StatusCode);
            Assert.Equal(200, response2.StatusCode);
            Assert.Equal(200, response3.StatusCode);
            Assert.Equal(200, response4.StatusCode);
        }
Example #2
0
        public async void When_RequestIsFailed_Should_ReturnStatusCode500()
        {
            var client   = new WebDavClient().SetWebDavDispatcher(Dispatcher.MockFaulted());
            var response = await client.Move("http://example.com/old", "http://example.com/new");

            Assert.Equal(500, response.StatusCode);
        }
Example #3
0
        public async void When_RequestIsSuccessfull_Should_ReturnStatusCode200()
        {
            var client    = new WebDavClient().SetWebDavDispatcher(Dispatcher.Mock());
            var response1 = await client.Move("http://example.com/old", "http://example.com/new");

            var response2 = await client.Move(new Uri("http://example.com/old"), new Uri("http://example.com/new"));

            var response3 = await client.Move("http://example.com/old", "http://example.com/new", new MoveParameters());

            var response4 = await client.Move(new Uri("http://example.com/old"), new Uri("http://example.com/new"), new MoveParameters());

            Assert.Equal(200, response1.StatusCode);
            Assert.Equal(200, response2.StatusCode);
            Assert.Equal(200, response3.StatusCode);
            Assert.Equal(200, response4.StatusCode);
        }
Example #4
0
        public async void When_IsCalledWithOverwriteOn_Should_SendOverwriteHeaderEqualsT()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move(sourceUri, new Uri("http://example.com/new"), new MoveParameters { Overwrite = true });

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("Overwrite", "T")), CancellationToken.None);
        }
Example #5
0
        public async void When_IsCalled_Should_SendDestinationHeader()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move(sourceUri, new Uri("http://example.com/new"));

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("Destination", "http://example.com/new")), CancellationToken.None);
        }
Example #6
0
        public async void When_IsCalled_Should_SendMoveRequest()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move(sourceUri, new Uri("http://example.com/new"));

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(CheckMoveRequestParameters()), CancellationToken.None);
        }
Example #7
0
        public async void When_IsCalledWithSourceLockToken_Should_SetIfHeader()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move(sourceUri, new Uri("http://example.com/new"), new MoveParameters { SourceLockToken = "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" });

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("If", "(<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>)")), CancellationToken.None);
        }
Example #8
0
        public async void When_IsCalledWithCancellationToken_Should_SendRequestWithIt()
        {
            var cts        = new CancellationTokenSource();
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move("http://example.com/old", "http://example.com/new", new MoveParameters { CancellationToken = cts.Token });

            await dispatcher.Received(1)
            .Send(Arg.Any <Uri>(), WebDavMethod.Move, Arg.Is(CheckMoveRequestParameters()), cts.Token);
        }
Example #9
0
        public async void When_IsCalled_Should_SendMoveRequest()
        {
            var sourceUri = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
            await client.Move(sourceUri, new Uri("http://example.com/new"));
            await dispatcher.Received(1)
                .Send(sourceUri, WebDavMethod.Move, Arg.Is(CheckMoveRequestParameters()), CancellationToken.None);
        }
Example #10
0
        public async void When_IsCalledWithOverwriteOff_Should_SendOverwriteHeaderEqualsF()
        {
            var sourceUri = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
            await client.Move(sourceUri, new Uri("http://example.com/new"), new MoveParameters { Overwrite = false });
            await dispatcher.Received(1)
                .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("Overwrite", "F")), CancellationToken.None);
        }
Example #11
0
        public async void When_IsCalledWithDefaultParameters_Should_SendOverwriteHeaderEqualsT()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any <HttpMethod>(), new RequestParameters(), CancellationToken.None);

            await client.Move(sourceUri, new Uri("http://example.com/new"));

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("Overwrite", "T")), CancellationToken.None);
        }
Example #12
0
        public async void When_IsCalledWithDestLockToken_Should_SetIfHeader()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any <HttpMethod>(), new RequestParameters(), CancellationToken.None);

            await client.Move(sourceUri, new Uri("http://example.com/new"), new MoveParameters { DestLockToken = "urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4" });

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("If", "(<urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>)")), CancellationToken.None);
        }
 public async Task Rename(DavItem item, string newName)
 {
     if (string.IsNullOrWhiteSpace(newName))
     {
         return;
     }
     newName = Uri.EscapeDataString(newName);
     newName = newName.Replace("%28", "(");
     newName = newName.Replace("%29", ")");
     newName = item.EntityId.TrimEnd('/').Substring(0, item.EntityId.TrimEnd('/').LastIndexOf('/') + 1) + newName;
     var client = new WebDavClient(new Uri(Configuration.ServerUrl, UriKind.RelativeOrAbsolute), Configuration.Credential);
     await client.Move(new Uri(item.EntityId, UriKind.RelativeOrAbsolute), new Uri(newName, UriKind.RelativeOrAbsolute));
 }
Example #14
0
        private static async Task TestWebDav()
        {
            using (var webDavClient = new WebDavClient(new WebDavClientParams {
                BaseAddress = new Uri("http://mywebdav:88/")
            }))
            {
                await webDavClient.Copy("1.txt", "_2.txt");

                await webDavClient.Move("http://mywebdav:88/_2.txt", "2.txt");

                await webDavClient.Mkcol("http://mywebdav:88/mydir");

                await webDavClient.PutFile("http://mywebdav:88/mydir/test.txt", File.OpenRead("test.txt"), "text/plain");

                await webDavClient.Move("mydir/test.txt", "http://mywebdav:88/mydir/test_ren.txt");

                await webDavClient.Copy("http://mywebdav:88/mydir/", "http://mywebdav:88/mydir1/");

                await webDavClient.Copy("http://mywebdav:88/mydir/", "http://mywebdav:88/mydir2/", new CopyParameters { ApplyTo = ApplyTo.Copy.ResourceOnly });

                using (var response = await webDavClient.GetRawFile("http://mywebdav:88/mydir/test_ren.txt"))
                    using (var reader = new StreamReader(response.Stream))
                    {
                        var fileOutput = await reader.ReadToEndAsync();

                        Console.WriteLine(fileOutput);
                    }

                await TestPropfind(webDavClient);

                await TestSearch(webDavClient);

                await TestLock(webDavClient);

                await TestPropatch(webDavClient);

                await webDavClient.Delete("http://mywebdav:88/mydir");
            }
        }
Example #15
0
        public async void When_IsCalledWithBothLockTokens_Should_SetIfHeaderWithBothTokens()
        {
            var sourceUri  = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client     = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move(sourceUri, new Uri("http://example.com/new"),
                              new MoveParameters
            {
                SourceLockToken = "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
                DestLockToken   = "urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4"
            });

            await dispatcher.Received(1)
            .Send(sourceUri, WebDavMethod.Move, Arg.Is(CheckIfHeader()), CancellationToken.None);
        }
Example #16
0
        /// <summary>
        /// Переименовать файл или папку на удаленом сервере
        /// </summary>
        /// <param name="oldPath">Полный путь к текущей папке</param>
        /// <param name="newPath">Полный путь к новой папке</param>
        public bool Rename(string oldPath, string newPath)
        {
            try
            {
                switch (typeSunc)
                {
                case TypeSunc.SFTP:
                {
                    sftp.RenameFile(oldPath, newPath);
                    break;
                }

                case TypeSunc.FTP:
                {
                    ftp.Rename(oldPath, newPath);
                    break;
                }

                case TypeSunc.WebDav:
                {
                    var res = webDav.Move(oldPath, newPath).Result;
                    if (!res.IsSuccessful)
                    {
                        report.Rename(oldPath, newPath, res);
                    }
                    break;
                }

                case TypeSunc.OneDrive:
                {
                    oneDrive.Rename(oldPath, Path.GetFileName(newPath)).Wait();
                    break;
                }
                }

                return(true);
            }
            catch (Exception ex)
            {
                report.Rename(oldPath, newPath, ex.ToString());
                return(false);
            }
        }
Example #17
0
        JsonResult IDriver.Paste(string source, string dest, IEnumerable <string> targets, bool isCut, IList <int> dublicateIndexes = null)
        {
            ReplaceResponse response      = new ReplaceResponse();
            string          destDecrypted = this.DecodeTarget(this.GetCorectTarget(dest));
            DirInfo         destInfo      = client.GetInfo(destDecrypted);
            int             ind           = 0;

            foreach (string target in targets)
            {
                WebDavRoot lroot           = this.GetRoot(dest);
                string     targetDecrypted = this.DecodeTarget(this.GetCorectTarget(target));
                DirInfo    targetInfo      = client.GetInfo(targetDecrypted);
                if (targetInfo == null)
                {
                    throw new ElFinderFileNotExists();
                }
                if (isCut)
                {
                    response.Removed.Add(this.GetCorectTarget(target));
                    client.Move(targetDecrypted, destDecrypted + targetInfo.DisplayName);
                    targetInfo = client.GetInfo(destInfo.RelPath + targetInfo.DisplayName);
                    response.Added.Add(DTOBase.Create(targetInfo, destInfo, lroot));
                }
                else
                {
                    string destinationFileName = dublicateIndexes != null && dublicateIndexes.Contains(ind)
                        ? GetCorrectDestinationFileName(destInfo.RelPath + targetInfo.DisplayName)
                        : destInfo.RelPath + targetInfo.DisplayName;

                    client.Copy(targetDecrypted, destinationFileName);
                    targetInfo = client.GetInfo(destinationFileName);
                    DirInfo parent = this.GetParent(targetInfo);
                    response.Added.Add(DTOBase.Create(targetInfo, parent, lroot));
                }
                ind++;
            }

            return(Json(response));
        }
        /// <summary>
        /// Moves remote files and returns wheter the moving was successfull
        /// </summary>
        /// <param name="sourceUri"></param>
        /// <param name="dstUri"></param>
        /// <returns>The RemoteProperty of the new dstUri File or null if something went wrong</returns>
        public IRemoteProperty MoveFile(CancellationToken cancleToken, string sourceUri, string dstUri, bool overwrite)
        {
            string lockToken     = _lockManager.LockResource(_webDavClient, dstUri, LockScope.Exclusive);
            string tempLockToken = _lockManager.LockResource(_webDavClient, sourceUri, LockScope.Exclusive);

            _logger.Debug("Moving remote file " + sourceUri + " to new destination " + dstUri);
            //Cannot get Exclusive Token, retry the sync at a later time
            if (lockToken == null || tempLockToken == null)
            {
                return(null);
            }
            try
            {
                WebDavResponse move = _webDavClient.Move(sourceUri, dstUri, new MoveParameters()
                {
                    Overwrite         = overwrite,
                    DestLockToken     = lockToken,
                    SourceLockToken   = tempLockToken,
                    CancellationToken = cancleToken
                }).Result;

                if (move != null && move.IsSuccessful)
                {
                    return(GetProperty(dstUri, _webDavClient));
                }
                else
                {
                    _logger.Error("Error occured while moving " + sourceUri + " to " + dstUri);
                }
            } catch (Exception exc)
            {
                _logger.Error("Error while moving temp file to its destination address: ", exc);
            } finally
            {
                _lockManager.UnlockResource(_webDavClient, dstUri, lockToken);
                _lockManager.UnlockResource(_webDavClient, sourceUri, tempLockToken);
            }
            return(null);
        }
 public async Task MoveToFolder(DavItem itemToMove, DavItem targetFolder)
 {
     var client = new WebDavClient(new Uri(Configuration.ServerUrl, UriKind.RelativeOrAbsolute), Configuration.Credential);
     var target = targetFolder.EntityId.TrimEnd('/') + "/" + itemToMove.EntityId.TrimEnd('/').Substring(itemToMove.EntityId.TrimEnd('/').LastIndexOf('/') + 1);
     await client.Move(new Uri(itemToMove.EntityId, UriKind.RelativeOrAbsolute), new Uri(target, UriKind.RelativeOrAbsolute));
 }
Example #20
0
 public async void When_RequestIsFailed_Should_ReturnStatusCode500()
 {
     var client = new WebDavClient().SetWebDavDispatcher(Dispatcher.MockFaulted());
     var response = await client.Move("http://example.com/old", "http://example.com/new");
     Assert.Equal(500, response.StatusCode);
 }
Example #21
0
        public async void When_IsCalledWithBothLockTokens_Should_SetIfHeaderWithBothTokens()
        {
            var sourceUri = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
            await client.Move(sourceUri, new Uri("http://example.com/new"),
                new MoveParameters
                {
                    SourceLockToken = "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
                    DestLockToken = "urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4"
                });
            await dispatcher.Received(1)
                .Send(sourceUri, WebDavMethod.Move, Arg.Is(CheckIfHeader()), CancellationToken.None);
        }
Example #22
0
        public async void When_IsCalledWithSourceLockToken_Should_SetIfHeader()
        {
            var sourceUri = new Uri("http://example.com/old");
            var dispatcher = Dispatcher.Mock();
            var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await dispatcher.DidNotReceiveWithAnyArgs().Send(sourceUri, Arg.Any<HttpMethod>(), new RequestParameters(), CancellationToken.None);
            await client.Move(sourceUri, new Uri("http://example.com/new"), new MoveParameters { SourceLockToken = "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" });
            await dispatcher.Received(1)
                .Send(sourceUri, WebDavMethod.Move, Arg.Is(Predicates.CompareHeader("If", "(<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>)")), CancellationToken.None);
        }
Example #23
0
        public async void When_IsCalledWithCancellationToken_Should_SendRequestWithIt()
        {
            var cts = new CancellationTokenSource();
            var dispatcher = Dispatcher.Mock();
            var client = new WebDavClient().SetWebDavDispatcher(dispatcher);

            await client.Move("http://example.com/old", "http://example.com/new", new MoveParameters { CancellationToken = cts.Token });
            await dispatcher.Received(1)
                .Send(Arg.Any<Uri>(), WebDavMethod.Move, Arg.Is(CheckMoveRequestParameters()), cts.Token);
        }