/// <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> /// Update entity in shares /// <param name="body"></param> /// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param> /// </summary> public RequestInformation CreatePatchRequestInformation(SharedDriveItem body, Action <SharedDriveItemItemRequestBuilderPatchRequestConfiguration> requestConfiguration = default) { _ = body ?? throw new ArgumentNullException(nameof(body)); var requestInfo = new RequestInformation { HttpMethod = Method.PATCH, UrlTemplate = UrlTemplate, PathParameters = PathParameters, }; requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body); if (requestConfiguration != null) { var requestConfig = new SharedDriveItemItemRequestBuilderPatchRequestConfiguration(); requestConfiguration.Invoke(requestConfig); requestInfo.AddRequestOptions(requestConfig.Options); requestInfo.AddHeaders(requestConfig.Headers); } return(requestInfo); }