public void RenameFolderSubElements(String OldFolderName, String NewFolderName) { if (_mode == CacheMode.Disabled) { return; } lock (CacheLock) { foreach (var FolderSubElement in FileNodeCache.Where(x => x.Key.StartsWith(OldFolderName + "\\")).ToList()) { String OldKeyName = FolderSubElement.Key; FolderSubElement.Value.LocalPath = NewFolderName + FolderSubElement.Value.LocalPath.Substring(OldFolderName.Length); FolderSubElement.Value.RepositoryPath = FileNode.ConvertLocalPathToRepositoryPath(FolderSubElement.Value.LocalPath); String NewKeyName = FolderSubElement.Value.LocalPath; FileNodeCache.RenameKey(OldKeyName, NewKeyName); } CacheRefreshed?.Invoke(this, null); } }
/// <summary> /// Retrieve a file or folder from the remote repository /// Return either a RepositoryElement or a FileSystem Error Message /// </summary> public WebDAVClient.Model.Item GetRepositoryElement(String LocalFileName) { String RepositoryDocumentName = FileNode.ConvertLocalPathToRepositoryPath(LocalFileName); WebDAVClient.Model.Item RepositoryElement = null; if (RepositoryDocumentName.Contains(".")) { //We assume the FileName refers to a file try { RepositoryElement = this.GetFile(RepositoryDocumentName).GetAwaiter().GetResult(); return(RepositoryElement); } catch (WebDAVException ex) when(ex.GetHttpCode() == 404) { return(null); } catch (WebDAVException ex) { throw ex; } catch (Exception ex) { throw ex; } } else { //We assume it's a folder try { RepositoryElement = this.GetFolder(RepositoryDocumentName).GetAwaiter().GetResult(); if (FileNode.IsRepositoryRootPath(RepositoryDocumentName)) { RepositoryElement.DisplayName = ""; } return(RepositoryElement); } catch (WebDAVException ex) when(ex.GetHttpCode() == 404) { //Try as a file try { RepositoryElement = this.GetFile(RepositoryDocumentName).GetAwaiter().GetResult(); return(RepositoryElement); } catch (WebDAVException ex1) when(ex1.GetHttpCode() == 404) { return(null); } catch (WebDAVException ex1) { throw ex1; } catch (Exception ex1) { throw ex1; } } catch (WebDAVException ex) { throw ex; } catch (Exception ex) { throw ex; } } }