/// <inheritdoc/> public async Task <bool> CopyAsync(IOneDriveStorageFolder destinationFolder, string desiredNewName = null, CancellationToken cancellationToken = default(CancellationToken)) { if (destinationFolder == null) { throw new ArgumentNullException(nameof(destinationFolder)); } if (OneDriveItem.Name == "root") { throw new Microsoft.Graph.ServiceException(new Error { Message = "Could not copy the root folder" }); } if (string.IsNullOrEmpty(desiredNewName)) { desiredNewName = this.OneDriveItem.Name; } OneDriveParentReference parentReference = new OneDriveParentReference(); if (destinationFolder.OneDriveItem.Name == "root") { parentReference.Parent.Path = "/drive/root:/"; } else { parentReference.Parent.Path = destinationFolder.OneDriveItem.ParentReference.Path + $"/{destinationFolder.OneDriveItem.Name}"; } parentReference.Name = desiredNewName; var copyRequest = ((IGraphServiceClient)Provider).Drive.Items[OneDriveItem.Id].Copy(desiredNewName); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, copyRequest.Request().RequestUrl); request.Headers.Add("Prefer", "respond-async"); var content = JsonConvert.SerializeObject(parentReference); request.Content = new StringContent(content, Encoding.UTF8, "application/json"); await Provider.AuthenticationProvider.AuthenticateRequestAsync(request).ConfigureAwait(false); var response = await Provider.HttpProvider.SendAsync(request, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false); return(response.IsSuccessStatusCode); }
/// <summary> /// Send an httpRequest to get an Onedrive Item /// </summary> /// <param name="provider">OneDriveClient Provider</param> /// <param name="request">Http Request to execute</param> /// <param name="destinationFolder">Destination folder</param> /// <param name="desiredNewName">New name</param> /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param> /// <returns>a OneDrive item or null if the request fail</returns> public static async Task <bool> MoveAsync(this IOneDriveClient provider, HttpRequestMessage request, OneDriveStorageFolder destinationFolder, string desiredNewName, CancellationToken cancellationToken) { OneDriveParentReference rootParentReference = new OneDriveParentReference(); if (destinationFolder.OneDriveItem.Name == "root") { rootParentReference.Parent.Path = "/drive/root:/"; } else { rootParentReference.Parent.Path = destinationFolder.OneDriveItem.ParentReference.Path + $"/{destinationFolder.OneDriveItem.Name}"; } rootParentReference.Name = desiredNewName; var content = JsonConvert.SerializeObject(rootParentReference); request.Content = new StringContent(content, Encoding.UTF8, "application/json"); await provider.AuthenticationProvider.AuthenticateRequestAsync(request).ConfigureAwait(false); var response = await provider.HttpProvider.SendAsync(request, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false); return(response.IsSuccessStatusCode); }