예제 #1
0
        private File GetFile(object id)
        {
            var file = clientContext.Web.GetFileByServerRelativeUrl((string)id);

            clientContext.Load(file);
            clientContext.Load(file.ListItemAllFields);

            try
            {
                clientContext.ExecuteQuery();
            }
            catch (Exception ex)
            {
                SharePointProviderInfoHelper.PublishFolder(MakeId(GetParentFolderId(id)));
                var serverException = (ServerException)ex;
                if (serverException.ServerErrorTypeName == (typeof(FileNotFoundException)).ToString())
                {
                    return(null);
                }
                return(new SharePointFileErrorEntry(file.Context, file.Path)
                {
                    Error = ex.Message, ID = id
                });
            }

            return(file);
        }
예제 #2
0
        private Folder GetFolder(object id)
        {
            if ((string)id == "")
            {
                id = SpRootFolderId;
            }
            var folder = clientContext.Web.GetFolderByServerRelativeUrl((string)id);

            clientContext.Load(folder);
            clientContext.Load(folder.Files, collection => collection.IncludeWithDefaultProperties(r => r.ListItemAllFields));
            clientContext.Load(folder.Folders);

            try
            {
                clientContext.ExecuteQuery();
            }
            catch (Exception ex)
            {
                SharePointProviderInfoHelper.PublishFolder(MakeId(GetParentFolderId(id)));
                var serverException = (ServerException)ex;
                if (serverException.ServerErrorTypeName == (typeof(FileNotFoundException)).ToString())
                {
                    return(null);
                }
                return(new SharePointFolderErrorEntry(folder.Context, folder.Path)
                {
                    Error = ex.Message, ID = id
                });
            }

            return(folder);
        }
예제 #3
0
        public void InvalidateStorage()
        {
            if (clientContext != null)
            {
                clientContext.Dispose();
            }

            SharePointProviderInfoHelper.Invalidate();
        }
예제 #4
0
        public Folder CreateFolder(string id)
        {
            var folder = clientContext.Web.RootFolder.Folders.Add(id);

            clientContext.Load(folder);
            clientContext.ExecuteQuery();

            SharePointProviderInfoHelper.CreateFolder(id, MakeId(GetParentFolderId(id)), folder);
            return(folder);
        }
예제 #5
0
 public SharePointProviderInfo(
     IOptionsMonitor <ILog> options,
     IServiceProvider serviceProvider,
     TenantUtil tenantUtil,
     SharePointProviderInfoHelper sharePointProviderInfoHelper)
 {
     Log             = options.CurrentValue;
     ServiceProvider = serviceProvider;
     TenantUtil      = tenantUtil;
     SharePointProviderInfoHelper = sharePointProviderInfoHelper;
 }
예제 #6
0
        public Folder CopyFolder(object id, object toFolderId)
        {
            SharePointProviderInfoHelper.PublishFolder(MakeId(toFolderId));

            var folder = GetFolderById(id);

            if (folder is SharePointFolderErrorEntry)
            {
                return(folder);
            }

            return(MoveFld(folder, toFolderId + "/" + GetFolderById(id).Name, false));
        }
예제 #7
0
        public string MoveFolder(string id, string toFolderId)
        {
            SharePointProviderInfoHelper.PublishFolder(MakeId(id), MakeId(GetParentFolderId(id)), MakeId(toFolderId));

            var folder = GetFolderById(id);

            if (folder is SharePointFolderErrorEntry)
            {
                return(MakeId(id));
            }

            return(MakeId(MoveFld(folder, toFolderId + "/" + GetFolderById(id).Name).ServerRelativeUrl));
        }
예제 #8
0
        public object RenameFolder(object id, string newTitle)
        {
            SharePointProviderInfoHelper.PublishFolder(MakeId(id), MakeId(GetParentFolderId(id)));

            var folder = GetFolderById(id);

            if (folder is SharePointFolderErrorEntry)
            {
                return(MakeId(id));
            }

            return(MakeId(MoveFld(folder, GetParentFolderId(id) + "/" + newTitle).ServerRelativeUrl));
        }
예제 #9
0
        public void DeleteFile(string id)
        {
            SharePointProviderInfoHelper.PublishFile(MakeId(id), MakeId(GetParentFolderId(id)));

            var file = GetFileById(id);

            if (file is SharePointFileErrorEntry)
            {
                return;
            }

            file.DeleteObject();
            clientContext.ExecuteQuery();
        }
예제 #10
0
        public void DeleteFolder(string id)
        {
            SharePointProviderInfoHelper.PublishFolder(MakeId(id), MakeId(GetParentFolderId(id)));

            var folder = GetFolderById(id);

            if (folder is SharePointFolderErrorEntry)
            {
                return;
            }

            folder.DeleteObject();
            clientContext.ExecuteQuery();
        }
예제 #11
0
        public File GetFileById(object id)
        {
            var key  = "spointf-" + MakeId(id);
            var file = SharePointProviderInfoHelper.GetFile(key);

            if (file == null)
            {
                file = GetFile(id);
                if (file != null)
                {
                    SharePointProviderInfoHelper.AddFile(key, file);
                }
            }
            return(file);
        }
예제 #12
0
        public Folder GetFolderById(object id)
        {
            var key    = "spointd-" + MakeId(id);
            var folder = SharePointProviderInfoHelper.GetFolder(key);

            if (folder == null)
            {
                folder = GetFolder(id);
                if (folder != null)
                {
                    SharePointProviderInfoHelper.AddFolder(key, folder);
                }
            }
            return(folder);
        }
예제 #13
0
        public File CopyFile(string id, string toFolderId)
        {
            SharePointProviderInfoHelper.PublishFolder(MakeId(toFolderId), MakeId(GetParentFolderId(id)));

            var file = GetFileById(id);

            if (file is SharePointFileErrorEntry)
            {
                return(file);
            }

            var newUrl = toFolderId + "/" + file.Name;

            file.CopyTo(newUrl, false);
            clientContext.ExecuteQuery();

            return(file);
        }
예제 #14
0
        public string RenameFile(string id, string newTitle)
        {
            SharePointProviderInfoHelper.PublishFile(MakeId(id), MakeId(GetParentFolderId(id)));

            var file = GetFileById(id);

            if (file is SharePointFileErrorEntry)
            {
                return(MakeId());
            }

            var newUrl = GetParentFolderId(file.ServerRelativeUrl) + "/" + newTitle;

            file.MoveTo(newUrl, MoveOperations.Overwrite);
            clientContext.ExecuteQuery();

            return(MakeId(newUrl));
        }
예제 #15
0
        public string MoveFile(string id, string toFolderId)
        {
            SharePointProviderInfoHelper.PublishFile(MakeId(id), MakeId(GetParentFolderId(id)));
            SharePointProviderInfoHelper.PublishFolder(MakeId(toFolderId));

            var file = GetFileById(id);

            if (file is SharePointFileErrorEntry)
            {
                return(MakeId());
            }

            var newUrl = toFolderId + "/" + file.Name;

            file.MoveTo(newUrl, MoveOperations.Overwrite);
            clientContext.ExecuteQuery();

            return(MakeId(newUrl));
        }
예제 #16
0
        public File CreateFile(string id, Stream stream)
        {
            byte[] b;

            using (var br = new BinaryReader(stream))
            {
                b = br.ReadBytes((int)stream.Length);
            }

            var file = clientContext.Web.RootFolder.Files.Add(new FileCreationInformation {
                Content = b, Url = id, Overwrite = true
            });

            clientContext.Load(file);
            clientContext.Load(file.ListItemAllFields);
            clientContext.ExecuteQuery();

            SharePointProviderInfoHelper.AddFile("spointf-" + MakeId(id), file);
            SharePointProviderInfoHelper.PublishFolder(MakeId(GetParentFolderId(id)));

            return(file);
        }