/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); }