Exemplo n.º 1
0
        /// <summary>
        /// 移動指定項目流程
        ///
        /// 包含: 新增資料夾API、列出OneDrive所有內容API、移動指定項目API、列出指定目錄內容API、刪除資料夾API
        /// </summary>
        /// <returns></returns>
        public async Task <bool> CallMoveDriveItemAsync()
        {
            try
            {
                DriveItem[] folderItem = new DriveItem[2];
                folderItem[0] = await FileApi.CreateFolderAsync(graphClient);

                folderItem[1] = await FileApi.CreateFolderAsync(graphClient);

                IDriveItemChildrenCollectionPage items = await FileApi.ListDriveItemAsync(graphClient);

                bool isUpdate = items.CurrentPage.Count(driveItem => folderItem.Select(c => c.Id).Contains(driveItem.Id)) == 2;
                Utils.Assert(isUpdate);

                await FileApi.MoveDriveItemAsync(graphClient, folderItem[0].Id, folderItem[1].Id);

                IDriveItemChildrenCollectionPage folder1Items = await FileApi.GetDriveItemAsync(graphClient, folderItem[0].Id);

                bool isMove = folder1Items.CurrentPage.Any(driveItem => driveItem.Id == folderItem[1].Id);
                Utils.Assert(isMove);

                await FileApi.DeleteDriveItemAsync(graphClient, folderItem[0].Id);

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(false);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 更新指定項目流程
        ///
        /// 包含: 新增資料夾API、列出OneDrive所有內容API、更新指定項目內容API、刪除資料夾API
        /// </summary>
        /// <returns></returns>
        public async Task <bool> CallUpdateDriveItemAsync()
        {
            try
            {
                DriveItem folderItem = await FileApi.CreateFolderAsync(graphClient);

                IDriveItemChildrenCollectionPage items = await FileApi.ListDriveItemAsync(graphClient);

                bool isCreate = items.CurrentPage.Any(driveItem => driveItem.Name == folderItem.Name);
                Utils.Assert(isCreate);

                DriveItem newFolderItem = await FileApi.UpdateDriveItemAsync(graphClient, folderItem.Id);

                items = await FileApi.ListDriveItemAsync(graphClient);

                bool isUpdate = items.CurrentPage.Any(driveItem => driveItem.Name == newFolderItem.Name);
                Utils.Assert(isUpdate);

                await FileApi.DeleteDriveItemAsync(graphClient, folderItem.Id);

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(false);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 更新分享連結權限流程
        ///
        /// 包含: 產生分享連結API、列出分享連結API、更新分享連結權限API、取得分享連結資訊API
        /// </summary>
        /// <returns></returns>
        public async Task <bool> CallUpdateSharingLinkAsync()
        {
            try
            {
                DriveItem item = await FileApi.CreateFolderAsync(graphClient);

                IDriveItemChildrenCollectionPage items = await FileApi.ListDriveItemAsync(graphClient);

                bool isCreate = items.CurrentPage.Any(driveItem => driveItem.Id == item.Id);
                Trace.Assert(isCreate);

                Permission link = await CreateShareLinkAsync(graphClient, item.Id);

                var links = await ListShareLinkAsync(graphClient, item.Id);

                isCreate = links.CurrentPage.Any(linkItem => linkItem.Id == link.Id);
                Trace.Assert(isCreate);

                link = await UpdateShareLinkAsync(graphClient, item.Id, link.Id);

                Permission linkInfo = await GetShareLinkAsync(graphClient, item.Id, link.Id);

                Trace.Assert(string.Join(',', link.Roles) == string.Join(',', linkInfo.Roles));

                await FileApi.DeleteDriveItemAsync(graphClient, item.Id);

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(false);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 存取分享連結流程
        ///
        /// 包含: 產生分享連結API、列出分享連結API、透過分享連結存取指定DriveItem API
        /// </summary>
        /// <returns></returns>
        public async Task <bool> CallAccessingShareLinkAsync()
        {
            try
            {
                DriveItem item = await FileApi.CreateFolderAsync(graphClient);

                IDriveItemChildrenCollectionPage items = await FileApi.ListDriveItemAsync(graphClient);

                bool isCreate = items.CurrentPage.Any(driveItem => driveItem.Id == item.Id);
                Trace.Assert(isCreate);

                Permission link = await CreateShareLinkAsync(graphClient, item.Id);

                var links = await ListShareLinkAsync(graphClient, item.Id);

                isCreate = links.CurrentPage.Any(linkItem => linkItem.Id == link.Id);
                Trace.Assert(isCreate);

                SharedDriveItem sharedItem = await AccessingSharedLinkAsync(graphClient, link.Link.WebUrl);

                Trace.Assert(sharedItem.Name == item.Name);

                await FileApi.DeleteDriveItemAsync(graphClient, item.Id);

                return(true);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(false);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 取得分享連結資訊流程
        ///
        /// 包含: 產生分享連結API、取得分享連結資訊API
        /// </summary>
        /// <returns></returns>
        public async Task <bool> CallGetSharingLinkAsync()
        {
            DriveItem item = await FileApi.CreateFolderAsync(graphClient);

            IDriveItemChildrenCollectionPage items = await FileApi.ListDriveItemAsync(graphClient);

            bool isCreate = items.CurrentPage.Any(driveItem => driveItem.Id == item.Id);

            Trace.Assert(isCreate);

            Permission link = await CreateShareLinkAsync(graphClient, item.Id);

            Permission linkInfo = await GetShareLinkAsync(graphClient, item.Id, link.Id);

            Trace.Assert(string.Join(',', link.Roles) == string.Join(',', linkInfo.Roles));

            await FileApi.DeleteDriveItemAsync(graphClient, item.Id);

            return(true);
        }