openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.2.0-beta.2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/Custom/Files/OpenAIFileClient.cs

316lines · modeblame

9f9f2936Jose Arriaga Maldonado2 years ago1using System;
2using System.ClientModel;
3using System.ClientModel.Primitives;
4using System.IO;
19a65a0aKrzysztof Cwalina2 years ago5using System.Threading;
9f9f2936Jose Arriaga Maldonado2 years ago6using System.Threading.Tasks;
7
8namespace OpenAI.Files;
9
13a9c686Jose Arriaga Maldonado1 years ago10// CUSTOM:
11// - Renamed.
12// - Suppressed constructor that takes endpoint parameter; endpoint is now a property in the options class.
13/// <summary> The service client for OpenAI file operations. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago14[CodeGenClient("Files")]
31c2ba63Jose Arriaga Maldonado1 years ago15[CodeGenSuppress("OpenAIFileClient", typeof(ClientPipeline), typeof(ApiKeyCredential), typeof(Uri))]
e0fee603Jose Arriaga Maldonado1 years ago16[CodeGenSuppress("ListFilesAsync", typeof(string), typeof(CancellationToken))]
17[CodeGenSuppress("ListFiles", typeof(string), typeof(CancellationToken))]
18[CodeGenSuppress("RetrieveFileAsync", typeof(string), typeof(CancellationToken))]
19[CodeGenSuppress("RetrieveFile", typeof(string), typeof(CancellationToken))]
31c2ba63Jose Arriaga Maldonado1 years ago20public partial class OpenAIFileClient
9f9f2936Jose Arriaga Maldonado2 years ago21{
3467b535Travis Wilson1 years ago22private InternalUploadsClient _internalUploadsClient;
23
2ab1a942Jose Arriaga Maldonado1 years ago24// CUSTOM: Added as a convenience.
e0fee603Jose Arriaga Maldonado1 years ago25/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
2ab1a942Jose Arriaga Maldonado1 years ago26/// <param name="apiKey"> The API key to authenticate with the service. </param>
e0fee603Jose Arriaga Maldonado1 years ago27/// <exception cref="ArgumentNullException"> <paramref name="apiKey"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago28public OpenAIFileClient(string apiKey) : this(new ApiKeyCredential(apiKey), new OpenAIClientOptions())
2ab1a942Jose Arriaga Maldonado1 years ago29{
30}
31
13a9c686Jose Arriaga Maldonado1 years ago32// CUSTOM:
33// - Used a custom pipeline.
34// - Demoted the endpoint parameter to be a property in the options class.
e0fee603Jose Arriaga Maldonado1 years ago35/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
13a9c686Jose Arriaga Maldonado1 years ago36/// <param name="credential"> The API key to authenticate with the service. </param>
37/// <exception cref="ArgumentNullException"> <paramref name="credential"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago38public OpenAIFileClient(ApiKeyCredential credential) : this(credential, new OpenAIClientOptions())
9f9f2936Jose Arriaga Maldonado2 years ago39{
40}
41
13a9c686Jose Arriaga Maldonado1 years ago42// CUSTOM:
43// - Used a custom pipeline.
44// - Demoted the endpoint parameter to be a property in the options class.
e0fee603Jose Arriaga Maldonado1 years ago45/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
13a9c686Jose Arriaga Maldonado1 years ago46/// <param name="credential"> The API key to authenticate with the service. </param>
47/// <param name="options"> The options to configure the client. </param>
48/// <exception cref="ArgumentNullException"> <paramref name="credential"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago49public OpenAIFileClient(ApiKeyCredential credential, OpenAIClientOptions options)
9f9f2936Jose Arriaga Maldonado2 years ago50{
13a9c686Jose Arriaga Maldonado1 years ago51Argument.AssertNotNull(credential, nameof(credential));
52options ??= new OpenAIClientOptions();
53
e0fee603Jose Arriaga Maldonado1 years ago54Pipeline = OpenAIClient.CreatePipeline(credential, options);
13a9c686Jose Arriaga Maldonado1 years ago55_endpoint = OpenAIClient.GetEndpoint(options);
e0fee603Jose Arriaga Maldonado1 years ago56_internalUploadsClient = new(Pipeline, options);
9f9f2936Jose Arriaga Maldonado2 years ago57}
58
13a9c686Jose Arriaga Maldonado1 years ago59// CUSTOM:
60// - Used a custom pipeline.
61// - Demoted the endpoint parameter to be a property in the options class.
62// - Made protected.
e0fee603Jose Arriaga Maldonado1 years ago63/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
13a9c686Jose Arriaga Maldonado1 years ago64/// <param name="pipeline"> The HTTP pipeline to send and receive REST requests and responses. </param>
65/// <param name="options"> The options to configure the client. </param>
66/// <exception cref="ArgumentNullException"> <paramref name="pipeline"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago67protected internal OpenAIFileClient(ClientPipeline pipeline, OpenAIClientOptions options)
9f9f2936Jose Arriaga Maldonado2 years ago68{
13a9c686Jose Arriaga Maldonado1 years ago69Argument.AssertNotNull(pipeline, nameof(pipeline));
70options ??= new OpenAIClientOptions();
71
e0fee603Jose Arriaga Maldonado1 years ago72Pipeline = pipeline;
13a9c686Jose Arriaga Maldonado1 years ago73_endpoint = OpenAIClient.GetEndpoint(options);
3467b535Travis Wilson1 years ago74_internalUploadsClient = new(pipeline, options);
9f9f2936Jose Arriaga Maldonado2 years ago75}
76
13a9c686Jose Arriaga Maldonado1 years ago77/// <summary> Uploads a file that can be used across various operations. </summary>
78/// <remarks> Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB. </remarks>
79/// <param name="file"> The file stream to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago80/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago81/// The filename associated with the file stream. The filename's extension (for example: .json) will be used to
82/// validate the file format. The request may fail if the filename's extension and the actual file format do
83/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago84/// </param>
85/// <param name="purpose"> The intended purpose of the uploaded file. </param>
13a9c686Jose Arriaga Maldonado1 years ago86/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago87/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
88/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago89public virtual async Task<ClientResult<OpenAIFile>> UploadFileAsync(Stream file, string filename, FileUploadPurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago90{
91Argument.AssertNotNull(file, nameof(file));
92Argument.AssertNotNullOrEmpty(filename, nameof(filename));
93
94InternalFileUploadOptions options = new()
95{
96Purpose = purpose
97};
98
99using MultipartFormDataBinaryContent content = options.ToMultipartContent(file, filename);
19a65a0aKrzysztof Cwalina2 years ago100ClientResult result = await UploadFileAsync(content, content.ContentType, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
e0fee603Jose Arriaga Maldonado1 years ago101return ClientResult.FromValue((OpenAIFile)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago102}
103
13a9c686Jose Arriaga Maldonado1 years ago104/// <summary> Uploads a file that can be used across various operations. </summary>
105/// <remarks> Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB. </remarks>
106/// <param name="file"> The file stream to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago107/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago108/// The filename associated with the file stream. The filename's extension (for example: .json) will be used to
109/// validate the file format. The request may fail if the filename's extension and the actual file format do
110/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago111/// </param>
112/// <param name="purpose"> The intended purpose of the uploaded file. </param>
13a9c686Jose Arriaga Maldonado1 years ago113/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago114/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
115/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago116public virtual ClientResult<OpenAIFile> UploadFile(Stream file, string filename, FileUploadPurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago117{
118Argument.AssertNotNull(file, nameof(file));
119Argument.AssertNotNullOrEmpty(filename, nameof(filename));
120
121InternalFileUploadOptions options = new()
122{
123Purpose = purpose
124};
125
126using MultipartFormDataBinaryContent content = options.ToMultipartContent(file, filename);
19a65a0aKrzysztof Cwalina2 years ago127ClientResult result = UploadFile(content, content.ContentType, cancellationToken.ToRequestOptions());
e0fee603Jose Arriaga Maldonado1 years ago128return ClientResult.FromValue((OpenAIFile)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago129}
130
13a9c686Jose Arriaga Maldonado1 years ago131/// <summary> Uploads a file that can be used across various operations. </summary>
132/// <remarks> Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB. </remarks>
133/// <param name="file"> The file bytes to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago134/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago135/// The filename associated with the file bytes. The filename's extension (for example: .json) will be used to
136/// validate the file format. The request may fail if the filename's extension and the actual file format do
137/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago138/// </param>
139/// <param name="purpose"> The intended purpose of the uploaded file. </param>
140/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
141/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago142public virtual Task<ClientResult<OpenAIFile>> UploadFileAsync(BinaryData file, string filename, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago143{
144Argument.AssertNotNull(file, nameof(file));
145Argument.AssertNotNullOrEmpty(filename, nameof(filename));
146
147return UploadFileAsync(file?.ToStream(), filename, purpose);
148}
149
13a9c686Jose Arriaga Maldonado1 years ago150/// <summary> Uploads a file that can be used across various operations. </summary>
151/// <remarks> Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB. </remarks>
152/// <param name="file"> The file bytes to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago153/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago154/// The filename associated with the file bytes. The filename's extension (for example: .json) will be used to
155/// validate the file format. The request may fail if the filename's extension and the actual file format do
156/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago157/// </param>
158/// <param name="purpose"> The intended purpose of the uploaded file. </param>
159/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
160/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago161public virtual ClientResult<OpenAIFile> UploadFile(BinaryData file, string filename, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago162{
163Argument.AssertNotNull(file, nameof(file));
164Argument.AssertNotNullOrEmpty(filename, nameof(filename));
165
166return UploadFile(file?.ToStream(), filename, purpose);
167}
168
13a9c686Jose Arriaga Maldonado1 years ago169/// <summary> Uploads a file that can be used across various operations. </summary>
170/// <remarks> Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB. </remarks>
9f9f2936Jose Arriaga Maldonado2 years ago171/// <param name="filePath">
13a9c686Jose Arriaga Maldonado1 years ago172/// The path of the file to upload. The provided file path's extension (for example: .json) will be used to
173/// validate the file format. The request may fail if the file path's extension and the actual file format do
174/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago175/// </param>
176/// <param name="purpose"> The intended purpose of the uploaded file. </param>
177/// <exception cref="ArgumentNullException"> <paramref name="filePath"/> was null. </exception>
178/// <exception cref="ArgumentException"> <paramref name="filePath"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago179public virtual async Task<ClientResult<OpenAIFile>> UploadFileAsync(string filePath, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago180{
181Argument.AssertNotNullOrEmpty(filePath, nameof(filePath));
182
183using FileStream stream = File.OpenRead(filePath);
184return await UploadFileAsync(stream, filePath, purpose).ConfigureAwait(false);
185}
186
13a9c686Jose Arriaga Maldonado1 years ago187/// <summary> Uploads a file that can be used across various operations. </summary>
188/// <remarks> Individual files can be up to 512 MB, and the size of all files uploaded by one organization can be up to 100 GB. </remarks>
9f9f2936Jose Arriaga Maldonado2 years ago189/// <param name="filePath">
13a9c686Jose Arriaga Maldonado1 years ago190/// The path of the file to upload. The provided file path's extension (for example: .json) will be used to
191/// validate the file format. The request may fail if the file path's extension and the actual file format do
192/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago193/// </param>
194/// <param name="purpose"> The intended purpose of the uploaded file. </param>
195/// <exception cref="ArgumentNullException"> <paramref name="filePath"/> was null. </exception>
196/// <exception cref="ArgumentException"> <paramref name="filePath"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago197public virtual ClientResult<OpenAIFile> UploadFile(string filePath, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago198{
199Argument.AssertNotNullOrEmpty(filePath, nameof(filePath));
200
201using FileStream stream = File.OpenRead(filePath);
202return UploadFile(stream, filePath, purpose);
203}
204
2ab1a942Jose Arriaga Maldonado1 years ago205/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
206/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
19ceae44ShivangiReja1 years ago207public virtual async Task<ClientResult<OpenAIFileCollection>> GetFilesAsync(CancellationToken cancellationToken = default)
2ab1a942Jose Arriaga Maldonado1 years ago208{
209ClientResult result = await GetFilesAsync(null, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
e0fee603Jose Arriaga Maldonado1 years ago210return ClientResult.FromValue((OpenAIFileCollection)result, result.GetRawResponse());
2ab1a942Jose Arriaga Maldonado1 years ago211}
212
213/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
214/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
19ceae44ShivangiReja1 years ago215public virtual ClientResult<OpenAIFileCollection> GetFiles(CancellationToken cancellationToken = default)
2ab1a942Jose Arriaga Maldonado1 years ago216{
217ClientResult result = GetFiles(null, cancellationToken.ToRequestOptions());
e0fee603Jose Arriaga Maldonado1 years ago218return ClientResult.FromValue((OpenAIFileCollection)result, result.GetRawResponse());
2ab1a942Jose Arriaga Maldonado1 years ago219}
220
13a9c686Jose Arriaga Maldonado1 years ago221/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago222/// <param name="purpose"> Only return files with the given purpose. </param>
13a9c686Jose Arriaga Maldonado1 years ago223/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
a330c2e7Jose Arriaga Maldonado1 years ago224public virtual async Task<ClientResult<OpenAIFileCollection>> GetFilesAsync(FilePurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago225{
a330c2e7Jose Arriaga Maldonado1 years ago226ClientResult result = await GetFilesAsync(purpose.ToSerialString(), cancellationToken.ToRequestOptions()).ConfigureAwait(false);
e0fee603Jose Arriaga Maldonado1 years ago227return ClientResult.FromValue((OpenAIFileCollection)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago228}
229
13a9c686Jose Arriaga Maldonado1 years ago230/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago231/// <param name="purpose"> Only return files with the given purpose. </param>
13a9c686Jose Arriaga Maldonado1 years ago232/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
a330c2e7Jose Arriaga Maldonado1 years ago233public virtual ClientResult<OpenAIFileCollection> GetFiles(FilePurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago234{
a330c2e7Jose Arriaga Maldonado1 years ago235ClientResult result = GetFiles(purpose.ToSerialString(), cancellationToken.ToRequestOptions());
e0fee603Jose Arriaga Maldonado1 years ago236return ClientResult.FromValue((OpenAIFileCollection)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago237}
238
13a9c686Jose Arriaga Maldonado1 years ago239/// <summary> Gets basic information about the specified file. </summary>
240/// <param name="fileId"> The ID of the desired file. </param>
241/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago242/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
243/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago244public virtual async Task<ClientResult<OpenAIFile>> GetFileAsync(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago245{
246Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
247
19a65a0aKrzysztof Cwalina2 years ago248ClientResult result = await GetFileAsync(fileId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
e0fee603Jose Arriaga Maldonado1 years ago249return ClientResult.FromValue((OpenAIFile)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago250}
251
13a9c686Jose Arriaga Maldonado1 years ago252/// <summary> Gets basic information about the specified file. </summary>
253/// <param name="fileId"> The ID of the desired file. </param>
254/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago255/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
256/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago257public virtual ClientResult<OpenAIFile> GetFile(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago258{
259Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
260
19a65a0aKrzysztof Cwalina2 years ago261ClientResult result = GetFile(fileId, cancellationToken.ToRequestOptions());
e0fee603Jose Arriaga Maldonado1 years ago262return ClientResult.FromValue((OpenAIFile)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago263}
264
13a9c686Jose Arriaga Maldonado1 years ago265/// <summary> Deletes the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago266/// <param name="fileId"> The ID of the file to delete. </param>
13a9c686Jose Arriaga Maldonado1 years ago267/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago268/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
269/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
2ab1a942Jose Arriaga Maldonado1 years ago270public virtual async Task<ClientResult<FileDeletionResult>> DeleteFileAsync(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago271{
272Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
273
19a65a0aKrzysztof Cwalina2 years ago274ClientResult result = await DeleteFileAsync(fileId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
e0fee603Jose Arriaga Maldonado1 years ago275return ClientResult.FromValue((FileDeletionResult)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago276}
277
13a9c686Jose Arriaga Maldonado1 years ago278/// <summary> Deletes the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago279/// <param name="fileId"> The ID of the file to delete. </param>
13a9c686Jose Arriaga Maldonado1 years ago280/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago281/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
282/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
2ab1a942Jose Arriaga Maldonado1 years ago283public virtual ClientResult<FileDeletionResult> DeleteFile(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago284{
285Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
286
19a65a0aKrzysztof Cwalina2 years ago287ClientResult result = DeleteFile(fileId, cancellationToken.ToRequestOptions());
e0fee603Jose Arriaga Maldonado1 years ago288return ClientResult.FromValue((FileDeletionResult)result, result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago289}
290
13a9c686Jose Arriaga Maldonado1 years ago291/// <summary> Downloads the content of the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago292/// <param name="fileId"> The ID of the file to download. </param>
13a9c686Jose Arriaga Maldonado1 years ago293/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago294/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
295/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19a65a0aKrzysztof Cwalina2 years ago296public virtual async Task<ClientResult<BinaryData>> DownloadFileAsync(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago297{
298Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
299
19a65a0aKrzysztof Cwalina2 years ago300ClientResult result = await DownloadFileAsync(fileId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
9f9f2936Jose Arriaga Maldonado2 years ago301return ClientResult.FromValue(result.GetRawResponse().Content, result.GetRawResponse());
302}
303
13a9c686Jose Arriaga Maldonado1 years ago304/// <summary> Downloads the content of the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago305/// <param name="fileId"> The ID of the file to download. </param>
13a9c686Jose Arriaga Maldonado1 years ago306/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago307/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
308/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19a65a0aKrzysztof Cwalina2 years ago309public virtual ClientResult<BinaryData> DownloadFile(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago310{
311Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
312
19a65a0aKrzysztof Cwalina2 years ago313ClientResult result = DownloadFile(fileId, cancellationToken.ToRequestOptions());
9f9f2936Jose Arriaga Maldonado2 years ago314return ClientResult.FromValue(result.GetRawResponse().Content, result.GetRawResponse());
315}
316}