in sdk/storage/Azure.Storage.Files.Shares/src/ShareFileClient.cs [4939:5319]
public virtual Response<ShareFileUploadInfo> UploadRangeFromUri(
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
ShareFileUploadRangeFromUriOptions options = default,
CancellationToken cancellationToken = default) =>
UploadRangeFromUriInternal(
sourceUri: sourceUri,
range: range,
sourceRange: sourceRange,
conditions: options?.Conditions,
sourceAuthentication: options?.SourceAuthentication,
fileLastWrittenMode: options?.FileLastWrittenMode,
async: false,
cancellationToken)
.EnsureCompleted();
/// <summary>
/// The <see cref="UploadRangeFromUriAsync(Uri, HttpRange, HttpRange, ShareFileRequestConditions, CancellationToken)"/>
/// operation writes a range from an Azure File to another Azure file. This API is supported only for version 2019-02-02 and higher.
/// </summary>
/// <param name="sourceUri">
/// Required. Specifies the URL of the source file, up to 2 KB in length.
/// If source is an Azure blob or Azure file, it must either be public or must be authenticated via a
/// shared access signature. If the source is public, no authentication is required to perform the operation.
/// </param>
/// <param name="range">
/// Specifies the range of bytes to be written. Both the start and end of the range must be specified.
/// </param>
/// <param name="sourceRange">
/// Specifies the range of bytes to be written from. Both the start and end of the range must be specified.
/// </param>
/// <param name="options">
/// Optional parameters. <see cref="ShareFileUploadRangeFromUriOptions"/>.
/// </param>
/// <param name="cancellationToken">
/// Optional <see cref="CancellationToken"/> to propagate
/// notifications that the operation should be cancelled.
/// </param>
/// <returns>
/// A <see cref="Response{StorageFileUploadInfo}"/> describing the
/// state of the file.
/// </returns>
/// <remarks>
/// A <see cref="RequestFailedException"/> will be thrown if
/// a failure occurs.
/// If multiple failures occur, an <see cref="AggregateException"/> will be thrown,
/// containing each failure instance.
/// </remarks>
public virtual async Task<Response<ShareFileUploadInfo>> UploadRangeFromUriAsync(
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
ShareFileUploadRangeFromUriOptions options = default,
CancellationToken cancellationToken = default) =>
await UploadRangeFromUriInternal(
sourceUri: sourceUri,
range: range,
sourceRange: sourceRange,
conditions: options?.Conditions,
sourceAuthentication: options?.SourceAuthentication,
fileLastWrittenMode: options?.FileLastWrittenMode,
async: true,
cancellationToken)
.ConfigureAwait(false);
/// <summary>
/// The <see cref="UploadRangeFromUri(Uri, HttpRange, HttpRange, ShareFileRequestConditions, CancellationToken)"/>
/// operation writes a range from an Azure File to another Azure file. This API is supported only for version 2019-02-02 and higher.
/// </summary>
/// <param name="sourceUri">
/// Required. Specifies the URL of the source file, up to 2 KB in length.
/// If source is an Azure blob or Azure file, it must either be public or must be authenticated via a
/// shared access signature. If the source is public, no authentication is required to perform the operation.
/// </param>
/// <param name="range">
/// Specifies the range of bytes to be written. Both the start and end of the range must be specified.
/// </param>
/// <param name="sourceRange">
/// Specifies the range of bytes to be written from. Both the start and end of the range must be specified.
/// </param>
/// <param name="conditions">
/// Optional <see cref="ShareFileRequestConditions"/> to add conditions
/// on creating the file.
/// </param>
/// <param name="cancellationToken">
/// Optional <see cref="CancellationToken"/> to propagate
/// notifications that the operation should be cancelled.
/// </param>
/// <returns>
/// A <see cref="Response{StorageFileUploadInfo}"/> describing the
/// state of the file.
/// </returns>
/// <remarks>
/// A <see cref="RequestFailedException"/> will be thrown if
/// a failure occurs.
/// If multiple failures occur, an <see cref="AggregateException"/> will be thrown,
/// containing each failure instance.
/// </remarks>
[EditorBrowsable(EditorBrowsableState.Never)]
#pragma warning disable AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
public virtual Response<ShareFileUploadInfo> UploadRangeFromUri(
#pragma warning restore AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
ShareFileRequestConditions conditions,
CancellationToken cancellationToken) =>
UploadRangeFromUriInternal(
sourceUri: sourceUri,
range: range,
sourceRange: sourceRange,
conditions: conditions,
sourceAuthentication: default,
fileLastWrittenMode: default,
async: false,
cancellationToken)
.EnsureCompleted();
/// <summary>
/// The <see cref="UploadRangeFromUri(Uri, HttpRange, HttpRange, CancellationToken)"/>
/// operation writes a range from an Azure File to another Azure file. This API is supported only for version 2019-02-02 and higher.
/// </summary>
/// <param name="sourceUri">
/// Required. Specifies the URL of the source file, up to 2 KB in length.
/// If source is an Azure blob or Azure file, it must either be public or must be authenticated via a
/// shared access signature. If the source is public, no authentication is required to perform the operation.
/// </param>
/// <param name="range">
/// Specifies the range of bytes to be written. Both the start and end of the range must be specified.
/// </param>
/// <param name="sourceRange">
/// Specifies the range of bytes to be written from. Both the start and end of the range must be specified.
/// </param>
/// <param name="cancellationToken">
/// Optional <see cref="CancellationToken"/> to propagate
/// notifications that the operation should be cancelled.
/// </param>
/// <returns>
/// A <see cref="Response{StorageFileUploadInfo}"/> describing the
/// state of the file.
/// </returns>
/// <remarks>
/// A <see cref="RequestFailedException"/> will be thrown if
/// a failure occurs.
/// If multiple failures occur, an <see cref="AggregateException"/> will be thrown,
/// containing each failure instance.
/// </remarks>
[ForwardsClientCalls]
#pragma warning disable AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual Response<ShareFileUploadInfo> UploadRangeFromUri(
#pragma warning restore AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
CancellationToken cancellationToken) =>
UploadRangeFromUriInternal(
sourceUri: sourceUri,
range: range,
sourceRange: sourceRange,
conditions: default,
sourceAuthentication: default,
fileLastWrittenMode: default,
async: false,
cancellationToken)
.EnsureCompleted();
/// <summary>
/// The <see cref="UploadRangeFromUriAsync(Uri, HttpRange, HttpRange, ShareFileRequestConditions, CancellationToken)"/>
/// operation writes a range from an Azure File to another Azure file. This API is supported only for version 2019-02-02 and higher.
/// </summary>
/// <param name="sourceUri">
/// Required. Specifies the URL of the source file, up to 2 KB in length.
/// If source is an Azure blob or Azure file, it must either be public or must be authenticated via a
/// shared access signature. If the source is public, no authentication is required to perform the operation.
/// </param>
/// <param name="range">
/// Specifies the range of bytes to be written. Both the start and end of the range must be specified.
/// </param>
/// <param name="sourceRange">
/// Specifies the range of bytes to be written from. Both the start and end of the range must be specified.
/// </param>
/// <param name="conditions">
/// Optional <see cref="ShareFileRequestConditions"/> to add conditions
/// on creating the file.
/// </param>
/// <param name="cancellationToken">
/// Optional <see cref="CancellationToken"/> to propagate
/// notifications that the operation should be cancelled.
/// </param>
/// <returns>
/// A <see cref="Response{StorageFileUploadInfo}"/> describing the
/// state of the file.
/// </returns>
/// <remarks>
/// A <see cref="RequestFailedException"/> will be thrown if
/// a failure occurs.
/// If multiple failures occur, an <see cref="AggregateException"/> will be thrown,
/// containing each failure instance.
/// </remarks>
[EditorBrowsable(EditorBrowsableState.Never)]
[ForwardsClientCalls]
#pragma warning disable AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
public virtual async Task<Response<ShareFileUploadInfo>> UploadRangeFromUriAsync(
#pragma warning restore AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
ShareFileRequestConditions conditions,
CancellationToken cancellationToken) =>
await UploadRangeFromUriInternal(
sourceUri: sourceUri,
range: range,
sourceRange: sourceRange,
conditions: conditions,
sourceAuthentication: default,
fileLastWrittenMode: default,
async: true,
cancellationToken)
.ConfigureAwait(false);
/// <summary>
/// The <see cref="UploadRangeFromUriAsync(Uri, HttpRange, HttpRange, CancellationToken)"/>
/// operation writes a range from an Azure File to another Azure file. This API is supported only for version 2019-02-02 and higher.
/// </summary>
/// <param name="sourceUri">
/// Required. Specifies the URL of the source file, up to 2 KB in length.
/// If source is an Azure blob or Azure file, it must either be public or must be authenticated via a
/// shared access signature. If the source is public, no authentication is required to perform the operation.
/// </param>
/// <param name="range">
/// Specifies the range of bytes to be written. Both the start and end of the range must be specified.
/// </param>
/// <param name="sourceRange">
/// Specifies the range of bytes to be written from. Both the start and end of the range must be specified.
/// </param>
/// <param name="cancellationToken">
/// Optional <see cref="CancellationToken"/> to propagate
/// notifications that the operation should be cancelled.
/// </param>
/// <returns>
/// A <see cref="Response{StorageFileUploadInfo}"/> describing the
/// state of the file.
/// </returns>
/// <remarks>
/// A <see cref="RequestFailedException"/> will be thrown if
/// a failure occurs.
/// If multiple failures occur, an <see cref="AggregateException"/> will be thrown,
/// containing each failure instance.
/// </remarks>
#pragma warning disable AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual async Task<Response<ShareFileUploadInfo>> UploadRangeFromUriAsync(
#pragma warning restore AZC0002 // DO ensure all service methods, both asynchronous and synchronous, take an optional CancellationToken parameter called cancellationToken.
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
CancellationToken cancellationToken) =>
await UploadRangeFromUriInternal(
sourceUri: sourceUri,
range: range,
sourceRange: sourceRange,
conditions: default,
sourceAuthentication: default,
fileLastWrittenMode: default,
async: true,
cancellationToken)
.ConfigureAwait(false);
/// <summary>
/// The <see cref="UploadRangeInternal"/> operation writes a range from an Azure File to another Azure file.
/// This API is supported only for version 2019-02-02 and higher.
/// </summary>
/// <param name="sourceUri">
/// Required. Specifies the URL of the source file, up to 2 KB in length.
/// If source is an Azure blob or Azure file, it must either be public or must be authenticated via a
/// shared access signature. If the source is public, no authentication is required to perform the operation.
/// </param>
/// <param name="range">
/// Specifies the range of bytes to be written. Both the start and end of the range must be specified.
/// </param>
/// <param name="sourceRange">
/// Specifies the range of bytes to be written from. Both the start and end of the range must be specified.
/// </param>
/// <param name="conditions">
/// Optional <see cref="ShareFileRequestConditions"/> to add conditions
/// on creating the file.
/// </param>
/// <param name="sourceAuthentication">
/// Optional. Source authentication used to access the source blob.
/// </param>
/// <param name="fileLastWrittenMode">
/// Optional. Specifies if the file last write time should be set to the current time,
/// or the last write time currently associated with the file should be preserved.
/// </param>
/// <param name="async">
/// Whether to invoke the operation asynchronously.
/// </param>
/// <param name="cancellationToken">
/// Optional <see cref="CancellationToken"/> to propagate
/// notifications that the operation should be cancelled.
/// </param>
/// <returns>
/// A <see cref="Response{FileInfo}"/> describing the
/// state of the file.
/// </returns>
/// <remarks>
/// A <see cref="RequestFailedException"/> will be thrown if
/// a failure occurs.
/// If multiple failures occur, an <see cref="AggregateException"/> will be thrown,
/// containing each failure instance.
/// </remarks>
private async Task<Response<ShareFileUploadInfo>> UploadRangeFromUriInternal(
Uri sourceUri,
HttpRange range,
HttpRange sourceRange,
ShareFileRequestConditions conditions,
HttpAuthorization sourceAuthentication,
FileLastWrittenMode? fileLastWrittenMode,
bool async,
CancellationToken cancellationToken)
{
using (ClientConfiguration.Pipeline.BeginLoggingScope(nameof(ShareFileClient)))
{
ClientConfiguration.Pipeline.LogMethodEnter(
nameof(ShareFileClient),
message:
$"{nameof(this.Uri)}: {this.Uri}\n" +
$"{nameof(sourceUri)}: {sourceUri}");
DiagnosticScope scope = ClientConfiguration.ClientDiagnostics.CreateScope($"{nameof(ShareFileClient)}.{nameof(UploadRangeFromUri)}");
try
{
scope.Start();
ResponseWithHeaders<FileUploadRangeFromURLHeaders> response;
if (async)
{
response = await FileRestClient.UploadRangeFromURLAsync(
range: range.ToString(),
copySource: sourceUri.AbsoluteUri,
contentLength: 0,
sourceRange: sourceRange.ToString(),
copySourceAuthorization: sourceAuthentication?.ToString(),
fileLastWrittenMode: fileLastWrittenMode,
shareFileRequestConditions: conditions,
cancellationToken: cancellationToken)
.ConfigureAwait(false);
}
else
{
response = FileRestClient.UploadRangeFromURL(
range: range.ToString(),
copySource: sourceUri.AbsoluteUri,
contentLength: 0,
sourceRange: sourceRange.ToString(),
copySourceAuthorization: sourceAuthentication?.ToString(),
fileLastWrittenMode: fileLastWrittenMode,
shareFileRequestConditions: conditions,
cancellationToken: cancellationToken);
}
return Response.FromValue(
response.ToShareFileUploadInfo(),
response.GetRawResponse());
}
catch (Exception ex)
{
ClientConfiguration.Pipeline.LogException(ex);
scope.Failed(ex);
throw;
}
finally
{
ClientConfiguration.Pipeline.LogMethodExit(nameof(ShareFileClient));
scope.Dispose();
}
}
}