Esempio n. 1
0
        public object MoveFile(object fileId, object toFolderId)
        {
            var onedriveFile = GetOneDriveItem(fileId);

            if (onedriveFile is ErrorItem)
            {
                throw new Exception(((ErrorItem)onedriveFile).Error);
            }

            var toOneDriveFolder = GetOneDriveItem(toFolderId);

            if (toOneDriveFolder is ErrorItem)
            {
                throw new Exception(((ErrorItem)toOneDriveFolder).Error);
            }

            var fromFolderId = GetParentFolderId(onedriveFile);

            var newTitle = GetAvailableTitle(onedriveFile.Name, toOneDriveFolder.Id, IsExist);

            onedriveFile = OneDriveProviderInfo.Storage.MoveItem(onedriveFile.Id, newTitle, toOneDriveFolder.Id);

            OneDriveProviderInfo.CacheReset(onedriveFile.Id);
            OneDriveProviderInfo.CacheReset(fromFolderId);
            OneDriveProviderInfo.CacheReset(toOneDriveFolder.Id);

            return(MakeId(onedriveFile.Id));
        }
        public object RenameFolder(Folder folder, string newTitle)
        {
            var onedriveFolder = GetOneDriveItem(folder.ID);
            var parentFolderId = GetParentFolderId(onedriveFolder);

            if (IsRoot(onedriveFolder))
            {
                //It's root folder
                OneDriveDaoSelector.RenameProvider(OneDriveProviderInfo, newTitle);
                //rename provider customer title
            }
            else
            {
                newTitle = GetAvailableTitle(newTitle, parentFolderId, IsExist);

                //rename folder
                onedriveFolder = OneDriveProviderInfo.Storage.RenameItem(onedriveFolder.Id, newTitle);
            }

            OneDriveProviderInfo.CacheReset(onedriveFolder.Id);
            if (parentFolderId != null)
            {
                OneDriveProviderInfo.CacheReset(parentFolderId);
            }

            return(MakeId(onedriveFolder.Id));
        }
        public object MoveFolder(object folderId, object toFolderId)
        {
            var onedriveFolder = GetOneDriveItem(folderId);

            if (onedriveFolder is ErrorItem)
            {
                throw new Exception(((ErrorItem)onedriveFolder).Error);
            }

            var toOneDriveFolder = GetOneDriveItem(toFolderId);

            if (toOneDriveFolder is ErrorItem)
            {
                throw new Exception(((ErrorItem)toOneDriveFolder).Error);
            }

            var fromFolderId = GetParentFolderId(onedriveFolder);

            onedriveFolder = OneDriveProviderInfo.Storage.MoveItem(onedriveFolder.Id, toOneDriveFolder.Id);

            OneDriveProviderInfo.CacheReset(onedriveFolder.Id);
            OneDriveProviderInfo.CacheReset(fromFolderId);
            OneDriveProviderInfo.CacheReset(toOneDriveFolder.Id);

            return(MakeId(onedriveFolder.Id));
        }
        public void DeleteFolder(object folderId)
        {
            var onedriveFolder = GetOneDriveItem(folderId);
            var id             = MakeId(onedriveFolder);

            using (var db = GetDb())
                using (var tx = db.BeginTransaction())
                {
                    var hashIDs = db.ExecuteList(Query("files_thirdparty_id_mapping")
                                                 .Select("hash_id")
                                                 .Where(Exp.Like("id", id, SqlLike.StartWith)))
                                  .ConvertAll(x => x[0]);

                    db.ExecuteNonQuery(Delete("files_tag_link").Where(Exp.In("entry_id", hashIDs)));
                    db.ExecuteNonQuery(Delete("files_tag").Where(Exp.EqColumns("0", Query("files_tag_link l").SelectCount().Where(Exp.EqColumns("tag_id", "id")))));
                    db.ExecuteNonQuery(Delete("files_security").Where(Exp.In("entry_id", hashIDs)));
                    db.ExecuteNonQuery(Delete("files_thirdparty_id_mapping").Where(Exp.In("hash_id", hashIDs)));

                    tx.Commit();
                }

            if (!(onedriveFolder is ErrorItem))
            {
                OneDriveProviderInfo.Storage.DeleteItem(onedriveFolder);
            }

            OneDriveProviderInfo.CacheReset(onedriveFolder.Id);
            var parentFolderId = GetParentFolderId(onedriveFolder);

            if (parentFolderId != null)
            {
                OneDriveProviderInfo.CacheReset(parentFolderId);
            }
        }
        public object SaveFolder(Folder folder)
        {
            if (folder == null)
            {
                throw new ArgumentNullException("folder");
            }
            if (folder.ID != null)
            {
                return(RenameFolder(folder, folder.Title));
            }

            if (folder.ParentFolderID != null)
            {
                var onedriveFolderId = MakeOneDriveId(folder.ParentFolderID);

                folder.Title = GetAvailableTitle(folder.Title, onedriveFolderId, IsExist);

                var onedriveFolder = OneDriveProviderInfo.Storage.CreateFolder(folder.Title, onedriveFolderId);

                OneDriveProviderInfo.CacheReset(onedriveFolder.Id);
                var parentFolderId = GetParentFolderId(onedriveFolder);
                if (parentFolderId != null)
                {
                    OneDriveProviderInfo.CacheReset(parentFolderId);
                }

                return(MakeId(onedriveFolder));
            }
            return(null);
        }
Esempio n. 6
0
        public void InvalidateCache(object fileId)
        {
            var onedriveFileId = MakeOneDriveId(fileId);

            OneDriveProviderInfo.CacheReset(onedriveFileId);

            var onedriveFile = GetOneDriveItem(fileId);
            var parentId     = GetParentFolderId(onedriveFile);

            if (parentId != null)
            {
                OneDriveProviderInfo.CacheReset(parentId);
            }
        }
Esempio n. 7
0
        public void DeleteFile(object fileId)
        {
            var onedriveFile = GetOneDriveItem(fileId);

            if (onedriveFile == null)
            {
                return;
            }
            var id = MakeId(onedriveFile.Id);

            using (var db = GetDb())
                using (var tx = db.BeginTransaction())
                {
                    var hashIDs = db.ExecuteList(Query("files_thirdparty_id_mapping")
                                                 .Select("hash_id")
                                                 .Where(Exp.Like("id", id, SqlLike.StartWith)))
                                  .ConvertAll(x => x[0]);

                    db.ExecuteNonQuery(Delete("files_tag_link").Where(Exp.In("entry_id", hashIDs)));
                    db.ExecuteNonQuery(Delete("files_security").Where(Exp.In("entry_id", hashIDs)));
                    db.ExecuteNonQuery(Delete("files_thirdparty_id_mapping").Where(Exp.In("hash_id", hashIDs)));

                    var tagsToRemove = db.ExecuteList(
                        Query("files_tag tbl_ft ")
                        .Select("tbl_ft.id")
                        .LeftOuterJoin("files_tag_link tbl_ftl", Exp.EqColumns("tbl_ft.tenant_id", "tbl_ftl.tenant_id") &
                                       Exp.EqColumns("tbl_ft.id", "tbl_ftl.tag_id"))
                        .Where("tbl_ftl.tag_id is null"))
                                       .ConvertAll(r => Convert.ToInt32(r[0]));

                    db.ExecuteNonQuery(Delete("files_tag").Where(Exp.In("id", tagsToRemove)));


                    tx.Commit();
                }

            if (!(onedriveFile is ErrorItem))
            {
                OneDriveProviderInfo.Storage.DeleteItem(onedriveFile);
            }

            OneDriveProviderInfo.CacheReset(onedriveFile.Id);
            var parentFolderId = GetParentFolderId(onedriveFile);

            if (parentFolderId != null)
            {
                OneDriveProviderInfo.CacheReset(parentFolderId);
            }
        }
Esempio n. 8
0
        public object FileRename(File file, string newTitle)
        {
            var onedriveFile = GetOneDriveItem(file.ID);

            newTitle = GetAvailableTitle(newTitle, GetParentFolderId(onedriveFile), IsExist);

            onedriveFile = OneDriveProviderInfo.Storage.RenameItem(onedriveFile.Id, newTitle);

            OneDriveProviderInfo.CacheReset(onedriveFile.Id);
            var parentId = GetParentFolderId(onedriveFile);

            if (parentId != null)
            {
                OneDriveProviderInfo.CacheReset(parentId);
            }

            return(MakeId(onedriveFile.Id));
        }
Esempio n. 9
0
        public File SaveFile(File file, Stream fileStream)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }
            if (fileStream == null)
            {
                throw new ArgumentNullException("fileStream");
            }

            Item newOneDriveFile = null;

            if (file.ID != null)
            {
                newOneDriveFile = OneDriveProviderInfo.Storage.SaveStream(MakeOneDriveId(file.ID), fileStream);
                if (!newOneDriveFile.Name.Equals(file.Title))
                {
                    file.Title      = GetAvailableTitle(file.Title, GetParentFolderId(newOneDriveFile), IsExist);
                    newOneDriveFile = OneDriveProviderInfo.Storage.RenameItem(newOneDriveFile.Id, file.Title);
                }
            }
            else if (file.FolderID != null)
            {
                var folderId = MakeOneDriveId(file.FolderID);
                var folder   = GetOneDriveItem(folderId);
                file.Title      = GetAvailableTitle(file.Title, folderId, IsExist);
                newOneDriveFile = OneDriveProviderInfo.Storage.CreateFile(fileStream, file.Title, MakeOneDrivePath(folder));
            }

            if (newOneDriveFile != null)
            {
                OneDriveProviderInfo.CacheReset(newOneDriveFile.Id);
            }
            var parentId = GetParentFolderId(newOneDriveFile);

            if (parentId != null)
            {
                OneDriveProviderInfo.CacheReset(parentId);
            }

            return(ToFile(newOneDriveFile));
        }
Esempio n. 10
0
        private File FinalizeUploadSession(ChunkedUploadSession uploadSession)
        {
            if (uploadSession.Items.ContainsKey("OneDriveSession"))
            {
                var oneDriveSession = uploadSession.GetItemOrDefault <ResumableUploadSession>("OneDriveSession");

                OneDriveProviderInfo.CacheReset(oneDriveSession.FileId);
                var parentDriveId = oneDriveSession.FolderId;
                if (parentDriveId != null)
                {
                    OneDriveProviderInfo.CacheReset(parentDriveId);
                }

                return(ToFile(GetOneDriveItem(oneDriveSession.FileId)));
            }

            using (var fs = new FileStream(uploadSession.GetItemOrDefault <string>("TempPath"), FileMode.Open, FileAccess.Read, FileShare.None, 4096, FileOptions.DeleteOnClose))
            {
                return(SaveFile(uploadSession.File, fs));
            }
        }
Esempio n. 11
0
        public Stream GetFileStream(File file, long offset)
        {
            var onedriveFileId = MakeOneDriveId(file.ID);

            OneDriveProviderInfo.CacheReset(onedriveFileId);

            var onedriveFile = GetOneDriveItem(file.ID);

            if (onedriveFile == null)
            {
                throw new ArgumentNullException("file", Web.Files.Resources.FilesCommonResource.ErrorMassage_FileNotFound);
            }
            if (onedriveFile is ErrorItem)
            {
                throw new Exception(((ErrorItem)onedriveFile).Error);
            }

            var fileStream = OneDriveProviderInfo.Storage.DownloadStream(onedriveFile, (int)offset);

            return(fileStream);
        }
Esempio n. 12
0
        public File CopyFile(object fileId, object toFolderId)
        {
            var onedriveFile = GetOneDriveItem(fileId);

            if (onedriveFile is ErrorItem)
            {
                throw new Exception(((ErrorItem)onedriveFile).Error);
            }

            var toOneDriveFolder = GetOneDriveItem(toFolderId);

            if (toOneDriveFolder is ErrorItem)
            {
                throw new Exception(((ErrorItem)toOneDriveFolder).Error);
            }

            var newOneDriveFile = OneDriveProviderInfo.Storage.CopyItem(onedriveFile, toOneDriveFolder.Id);

            OneDriveProviderInfo.CacheReset(newOneDriveFile.Id);
            OneDriveProviderInfo.CacheReset(toOneDriveFolder.Id);

            return(ToFile(newOneDriveFile));
        }
        public Folder CopyFolder(object folderId, object toFolderId, CancellationToken?cancellationToken)
        {
            var onedriveFolder = GetOneDriveItem(folderId);

            if (onedriveFolder is ErrorItem)
            {
                throw new Exception(((ErrorItem)onedriveFolder).Error);
            }

            var toOneDriveFolder = GetOneDriveItem(toFolderId);

            if (toOneDriveFolder is ErrorItem)
            {
                throw new Exception(((ErrorItem)toOneDriveFolder).Error);
            }

            var newTitle          = GetAvailableTitle(onedriveFolder.Name, toOneDriveFolder.Id, IsExist);
            var newOneDriveFolder = OneDriveProviderInfo.Storage.CopyItem(onedriveFolder.Id, newTitle, toOneDriveFolder.Id);

            OneDriveProviderInfo.CacheReset(newOneDriveFolder.Id);
            OneDriveProviderInfo.CacheReset(toOneDriveFolder.Id);

            return(ToFolder(newOneDriveFolder));
        }