openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.3.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/Custom/Files/OpenAIFileClient.cs

336lines · modeblame

9f9f2936Jose Arriaga Maldonado2 years ago1using System;
2using System.ClientModel;
3using System.ClientModel.Primitives;
3613b6a0Jose Arriaga Maldonado1 years ago4using System.Diagnostics.CodeAnalysis;
9f9f2936Jose Arriaga Maldonado2 years ago5using System.IO;
19a65a0aKrzysztof Cwalina2 years ago6using System.Threading;
9f9f2936Jose Arriaga Maldonado2 years ago7using System.Threading.Tasks;
8
9namespace OpenAI.Files;
10
13a9c686Jose Arriaga Maldonado1 years ago11// CUSTOM:
12// - Renamed.
13// - Suppressed constructor that takes endpoint parameter; endpoint is now a property in the options class.
14/// <summary> The service client for OpenAI file operations. </summary>
0ca4c062Jose Arriaga Maldonado1 years ago15[CodeGenType("Files")]
16[CodeGenSuppress("OpenAIFileClient", typeof(ClientPipeline), typeof(Uri))]
5dce104aJose Arriaga Maldonado1 years ago17[CodeGenSuppress("GetFilesAsync", typeof(string), typeof(CancellationToken))]
18[CodeGenSuppress("GetFiles", typeof(string), typeof(CancellationToken))]
dff9bb58Jose Arriaga Maldonado1 years ago19[CodeGenSuppress("GetFileAsync", typeof(string), typeof(CancellationToken))]
20[CodeGenSuppress("GetFile", typeof(string), typeof(CancellationToken))]
31c2ba63Jose Arriaga Maldonado1 years ago21public partial class OpenAIFileClient
9f9f2936Jose Arriaga Maldonado2 years ago22{
3467b535Travis Wilson1 years ago23private InternalUploadsClient _internalUploadsClient;
24
2ab1a942Jose Arriaga Maldonado1 years ago25// CUSTOM: Added as a convenience.
e0fee603Jose Arriaga Maldonado1 years ago26/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
2ab1a942Jose Arriaga Maldonado1 years ago27/// <param name="apiKey"> The API key to authenticate with the service. </param>
e0fee603Jose Arriaga Maldonado1 years ago28/// <exception cref="ArgumentNullException"> <paramref name="apiKey"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago29public OpenAIFileClient(string apiKey) : this(new ApiKeyCredential(apiKey), new OpenAIClientOptions())
2ab1a942Jose Arriaga Maldonado1 years ago30{
31}
32
13a9c686Jose Arriaga Maldonado1 years ago33// CUSTOM:
34// - Used a custom pipeline.
35// - Demoted the endpoint parameter to be a property in the options class.
e0fee603Jose Arriaga Maldonado1 years ago36/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
13a9c686Jose Arriaga Maldonado1 years ago37/// <param name="credential"> The API key to authenticate with the service. </param>
38/// <exception cref="ArgumentNullException"> <paramref name="credential"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago39public OpenAIFileClient(ApiKeyCredential credential) : this(credential, new OpenAIClientOptions())
9f9f2936Jose Arriaga Maldonado2 years ago40{
41}
42
13a9c686Jose Arriaga Maldonado1 years ago43// CUSTOM:
44// - Used a custom pipeline.
45// - Demoted the endpoint parameter to be a property in the options class.
e0fee603Jose Arriaga Maldonado1 years ago46/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
13a9c686Jose Arriaga Maldonado1 years ago47/// <param name="credential"> The API key to authenticate with the service. </param>
48/// <param name="options"> The options to configure the client. </param>
49/// <exception cref="ArgumentNullException"> <paramref name="credential"/> is null. </exception>
3613b6a0Jose Arriaga Maldonado1 years ago50public OpenAIFileClient(ApiKeyCredential credential, OpenAIClientOptions options) : this(OpenAIClient.CreateApiKeyAuthenticationPolicy(credential), options)
9f9f2936Jose Arriaga Maldonado2 years ago51{
3613b6a0Jose Arriaga Maldonado1 years ago52}
53
54// CUSTOM: Added as a convenience.
55/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
56/// <param name="authenticationPolicy"> The authentication policy used to authenticate with the service. </param>
57/// <exception cref="ArgumentNullException"> <paramref name="authenticationPolicy"/> is null. </exception>
58[Experimental("OPENAI001")]
59public OpenAIFileClient(AuthenticationPolicy authenticationPolicy) : this(authenticationPolicy, new OpenAIClientOptions())
60{
61}
62
63// CUSTOM: Added as a convenience.
64/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
65/// <param name="authenticationPolicy"> The authentication policy used to authenticate with the service. </param>
66/// <param name="options"> The options to configure the client. </param>
67/// <exception cref="ArgumentNullException"> <paramref name="authenticationPolicy"/> is null. </exception>
68[Experimental("OPENAI001")]
69public OpenAIFileClient(AuthenticationPolicy authenticationPolicy, OpenAIClientOptions options)
70{
71Argument.AssertNotNull(authenticationPolicy, nameof(authenticationPolicy));
13a9c686Jose Arriaga Maldonado1 years ago72options ??= new OpenAIClientOptions();
73
3613b6a0Jose Arriaga Maldonado1 years ago74Pipeline = OpenAIClient.CreatePipeline(authenticationPolicy, options);
13a9c686Jose Arriaga Maldonado1 years ago75_endpoint = OpenAIClient.GetEndpoint(options);
e0fee603Jose Arriaga Maldonado1 years ago76_internalUploadsClient = new(Pipeline, options);
9f9f2936Jose Arriaga Maldonado2 years ago77}
78
13a9c686Jose Arriaga Maldonado1 years ago79// CUSTOM:
80// - Used a custom pipeline.
81// - Demoted the endpoint parameter to be a property in the options class.
82// - Made protected.
e0fee603Jose Arriaga Maldonado1 years ago83/// <summary> Initializes a new instance of <see cref="OpenAIFileClient"/>. </summary>
13a9c686Jose Arriaga Maldonado1 years ago84/// <param name="pipeline"> The HTTP pipeline to send and receive REST requests and responses. </param>
85/// <param name="options"> The options to configure the client. </param>
86/// <exception cref="ArgumentNullException"> <paramref name="pipeline"/> is null. </exception>
31c2ba63Jose Arriaga Maldonado1 years ago87protected internal OpenAIFileClient(ClientPipeline pipeline, OpenAIClientOptions options)
9f9f2936Jose Arriaga Maldonado2 years ago88{
13a9c686Jose Arriaga Maldonado1 years ago89Argument.AssertNotNull(pipeline, nameof(pipeline));
90options ??= new OpenAIClientOptions();
91
e0fee603Jose Arriaga Maldonado1 years ago92Pipeline = pipeline;
13a9c686Jose Arriaga Maldonado1 years ago93_endpoint = OpenAIClient.GetEndpoint(options);
3467b535Travis Wilson1 years ago94_internalUploadsClient = new(pipeline, options);
9f9f2936Jose Arriaga Maldonado2 years ago95}
96
13a9c686Jose Arriaga Maldonado1 years ago97/// <summary> Uploads a file that can be used across various operations. </summary>
98/// <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>
99/// <param name="file"> The file stream to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago100/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago101/// The filename associated with the file stream. The filename's extension (for example: .json) will be used to
102/// validate the file format. The request may fail if the filename's extension and the actual file format do
103/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago104/// </param>
105/// <param name="purpose"> The intended purpose of the uploaded file. </param>
13a9c686Jose Arriaga Maldonado1 years ago106/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago107/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
108/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago109public virtual async Task<ClientResult<OpenAIFile>> UploadFileAsync(Stream file, string filename, FileUploadPurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago110{
111Argument.AssertNotNull(file, nameof(file));
112Argument.AssertNotNullOrEmpty(filename, nameof(filename));
113
114InternalFileUploadOptions options = new()
115{
116Purpose = purpose
117};
118
0ca4c062Jose Arriaga Maldonado1 years ago119using MultiPartFormDataBinaryContent content = options.ToMultipartContent(file, filename);
19a65a0aKrzysztof Cwalina2 years ago120ClientResult result = await UploadFileAsync(content, content.ContentType, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
5dce104aJose Arriaga Maldonado1 years ago121return ClientResult.FromValue(OpenAIFile.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago122}
123
13a9c686Jose Arriaga Maldonado1 years ago124/// <summary> Uploads a file that can be used across various operations. </summary>
125/// <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>
126/// <param name="file"> The file stream to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago127/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago128/// The filename associated with the file stream. The filename's extension (for example: .json) will be used to
129/// validate the file format. The request may fail if the filename's extension and the actual file format do
130/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago131/// </param>
132/// <param name="purpose"> The intended purpose of the uploaded file. </param>
13a9c686Jose Arriaga Maldonado1 years ago133/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago134/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
135/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago136public virtual ClientResult<OpenAIFile> UploadFile(Stream file, string filename, FileUploadPurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago137{
138Argument.AssertNotNull(file, nameof(file));
139Argument.AssertNotNullOrEmpty(filename, nameof(filename));
140
141InternalFileUploadOptions options = new()
142{
143Purpose = purpose
144};
145
0ca4c062Jose Arriaga Maldonado1 years ago146using MultiPartFormDataBinaryContent content = options.ToMultipartContent(file, filename);
19a65a0aKrzysztof Cwalina2 years ago147ClientResult result = UploadFile(content, content.ContentType, cancellationToken.ToRequestOptions());
5dce104aJose Arriaga Maldonado1 years ago148return ClientResult.FromValue(OpenAIFile.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago149}
150
13a9c686Jose Arriaga Maldonado1 years ago151/// <summary> Uploads a file that can be used across various operations. </summary>
152/// <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>
153/// <param name="file"> The file bytes to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago154/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago155/// The filename associated with the file bytes. The filename's extension (for example: .json) will be used to
156/// validate the file format. The request may fail if the filename's extension and the actual file format do
157/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago158/// </param>
159/// <param name="purpose"> The intended purpose of the uploaded file. </param>
160/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
161/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago162public virtual Task<ClientResult<OpenAIFile>> UploadFileAsync(BinaryData file, string filename, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago163{
164Argument.AssertNotNull(file, nameof(file));
165Argument.AssertNotNullOrEmpty(filename, nameof(filename));
166
167return UploadFileAsync(file?.ToStream(), filename, purpose);
168}
169
13a9c686Jose Arriaga Maldonado1 years ago170/// <summary> Uploads a file that can be used across various operations. </summary>
171/// <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>
172/// <param name="file"> The file bytes to upload. </param>
9f9f2936Jose Arriaga Maldonado2 years ago173/// <param name="filename">
13a9c686Jose Arriaga Maldonado1 years ago174/// The filename associated with the file bytes. The filename's extension (for example: .json) will be used to
175/// validate the file format. The request may fail if the filename's extension and the actual file format do
176/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago177/// </param>
178/// <param name="purpose"> The intended purpose of the uploaded file. </param>
179/// <exception cref="ArgumentNullException"> <paramref name="file"/> or <paramref name="filename"/> is null. </exception>
180/// <exception cref="ArgumentException"> <paramref name="filename"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago181public virtual ClientResult<OpenAIFile> UploadFile(BinaryData file, string filename, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago182{
183Argument.AssertNotNull(file, nameof(file));
184Argument.AssertNotNullOrEmpty(filename, nameof(filename));
185
186return UploadFile(file?.ToStream(), filename, purpose);
187}
188
13a9c686Jose Arriaga Maldonado1 years ago189/// <summary> Uploads a file that can be used across various operations. </summary>
190/// <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 ago191/// <param name="filePath">
13a9c686Jose Arriaga Maldonado1 years ago192/// The path of the file to upload. The provided file path's extension (for example: .json) will be used to
193/// validate the file format. The request may fail if the file path's extension and the actual file format do
194/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago195/// </param>
196/// <param name="purpose"> The intended purpose of the uploaded file. </param>
197/// <exception cref="ArgumentNullException"> <paramref name="filePath"/> was null. </exception>
198/// <exception cref="ArgumentException"> <paramref name="filePath"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago199public virtual async Task<ClientResult<OpenAIFile>> UploadFileAsync(string filePath, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago200{
201Argument.AssertNotNullOrEmpty(filePath, nameof(filePath));
202
203using FileStream stream = File.OpenRead(filePath);
204return await UploadFileAsync(stream, filePath, purpose).ConfigureAwait(false);
205}
206
13a9c686Jose Arriaga Maldonado1 years ago207/// <summary> Uploads a file that can be used across various operations. </summary>
208/// <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 ago209/// <param name="filePath">
13a9c686Jose Arriaga Maldonado1 years ago210/// The path of the file to upload. The provided file path's extension (for example: .json) will be used to
211/// validate the file format. The request may fail if the file path's extension and the actual file format do
212/// not match.
9f9f2936Jose Arriaga Maldonado2 years ago213/// </param>
214/// <param name="purpose"> The intended purpose of the uploaded file. </param>
215/// <exception cref="ArgumentNullException"> <paramref name="filePath"/> was null. </exception>
216/// <exception cref="ArgumentException"> <paramref name="filePath"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago217public virtual ClientResult<OpenAIFile> UploadFile(string filePath, FileUploadPurpose purpose)
9f9f2936Jose Arriaga Maldonado2 years ago218{
219Argument.AssertNotNullOrEmpty(filePath, nameof(filePath));
220
221using FileStream stream = File.OpenRead(filePath);
222return UploadFile(stream, filePath, purpose);
223}
224
2ab1a942Jose Arriaga Maldonado1 years ago225/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
226/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
19ceae44ShivangiReja1 years ago227public virtual async Task<ClientResult<OpenAIFileCollection>> GetFilesAsync(CancellationToken cancellationToken = default)
2ab1a942Jose Arriaga Maldonado1 years ago228{
229ClientResult result = await GetFilesAsync(null, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
5dce104aJose Arriaga Maldonado1 years ago230return ClientResult.FromValue(OpenAIFileCollection.FromClientResult(result), result.GetRawResponse());
2ab1a942Jose Arriaga Maldonado1 years ago231}
232
233/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
234/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
19ceae44ShivangiReja1 years ago235public virtual ClientResult<OpenAIFileCollection> GetFiles(CancellationToken cancellationToken = default)
2ab1a942Jose Arriaga Maldonado1 years ago236{
237ClientResult result = GetFiles(null, cancellationToken.ToRequestOptions());
5dce104aJose Arriaga Maldonado1 years ago238return ClientResult.FromValue(OpenAIFileCollection.FromClientResult(result), result.GetRawResponse());
2ab1a942Jose Arriaga Maldonado1 years ago239}
240
13a9c686Jose Arriaga Maldonado1 years ago241/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago242/// <param name="purpose"> Only return files with the given purpose. </param>
13a9c686Jose Arriaga Maldonado1 years ago243/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
a330c2e7Jose Arriaga Maldonado1 years ago244public virtual async Task<ClientResult<OpenAIFileCollection>> GetFilesAsync(FilePurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago245{
a330c2e7Jose Arriaga Maldonado1 years ago246ClientResult result = await GetFilesAsync(purpose.ToSerialString(), cancellationToken.ToRequestOptions()).ConfigureAwait(false);
5dce104aJose Arriaga Maldonado1 years ago247return ClientResult.FromValue(OpenAIFileCollection.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago248}
249
13a9c686Jose Arriaga Maldonado1 years ago250/// <summary> Gets basic information about each of the files belonging to the user's organization. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago251/// <param name="purpose"> Only return files with the given purpose. </param>
13a9c686Jose Arriaga Maldonado1 years ago252/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
a330c2e7Jose Arriaga Maldonado1 years ago253public virtual ClientResult<OpenAIFileCollection> GetFiles(FilePurpose purpose, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago254{
a330c2e7Jose Arriaga Maldonado1 years ago255ClientResult result = GetFiles(purpose.ToSerialString(), cancellationToken.ToRequestOptions());
5dce104aJose Arriaga Maldonado1 years ago256return ClientResult.FromValue(OpenAIFileCollection.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago257}
258
13a9c686Jose Arriaga Maldonado1 years ago259/// <summary> Gets basic information about the specified file. </summary>
260/// <param name="fileId"> The ID of the desired file. </param>
261/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago262/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
263/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago264public virtual async Task<ClientResult<OpenAIFile>> GetFileAsync(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago265{
266Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
267
19a65a0aKrzysztof Cwalina2 years ago268ClientResult result = await GetFileAsync(fileId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
5dce104aJose Arriaga Maldonado1 years ago269return ClientResult.FromValue(OpenAIFile.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago270}
271
13a9c686Jose Arriaga Maldonado1 years ago272/// <summary> Gets basic information about the specified file. </summary>
273/// <param name="fileId"> The ID of the desired file. </param>
274/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago275/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
276/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19ceae44ShivangiReja1 years ago277public virtual ClientResult<OpenAIFile> GetFile(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago278{
279Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
280
19a65a0aKrzysztof Cwalina2 years ago281ClientResult result = GetFile(fileId, cancellationToken.ToRequestOptions());
5dce104aJose Arriaga Maldonado1 years ago282return ClientResult.FromValue(OpenAIFile.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago283}
284
13a9c686Jose Arriaga Maldonado1 years ago285/// <summary> Deletes the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago286/// <param name="fileId"> The ID of the file to delete. </param>
13a9c686Jose Arriaga Maldonado1 years ago287/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago288/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
289/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
2ab1a942Jose Arriaga Maldonado1 years ago290public virtual async Task<ClientResult<FileDeletionResult>> DeleteFileAsync(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago291{
292Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
293
19a65a0aKrzysztof Cwalina2 years ago294ClientResult result = await DeleteFileAsync(fileId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
5dce104aJose Arriaga Maldonado1 years ago295return ClientResult.FromValue(FileDeletionResult.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago296}
297
13a9c686Jose Arriaga Maldonado1 years ago298/// <summary> Deletes the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago299/// <param name="fileId"> The ID of the file to delete. </param>
13a9c686Jose Arriaga Maldonado1 years ago300/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago301/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
302/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
2ab1a942Jose Arriaga Maldonado1 years ago303public virtual ClientResult<FileDeletionResult> DeleteFile(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago304{
305Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
306
19a65a0aKrzysztof Cwalina2 years ago307ClientResult result = DeleteFile(fileId, cancellationToken.ToRequestOptions());
5dce104aJose Arriaga Maldonado1 years ago308return ClientResult.FromValue(FileDeletionResult.FromClientResult(result), result.GetRawResponse());
9f9f2936Jose Arriaga Maldonado2 years ago309}
310
13a9c686Jose Arriaga Maldonado1 years ago311/// <summary> Downloads the content of the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago312/// <param name="fileId"> The ID of the file to download. </param>
13a9c686Jose Arriaga Maldonado1 years ago313/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago314/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
315/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19a65a0aKrzysztof Cwalina2 years ago316public virtual async Task<ClientResult<BinaryData>> DownloadFileAsync(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago317{
318Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
319
19a65a0aKrzysztof Cwalina2 years ago320ClientResult result = await DownloadFileAsync(fileId, cancellationToken.ToRequestOptions()).ConfigureAwait(false);
9f9f2936Jose Arriaga Maldonado2 years ago321return ClientResult.FromValue(result.GetRawResponse().Content, result.GetRawResponse());
322}
323
13a9c686Jose Arriaga Maldonado1 years ago324/// <summary> Downloads the content of the specified file. </summary>
9f9f2936Jose Arriaga Maldonado2 years ago325/// <param name="fileId"> The ID of the file to download. </param>
13a9c686Jose Arriaga Maldonado1 years ago326/// <param name="cancellationToken"> A token that can be used to cancel this method call. </param>
9f9f2936Jose Arriaga Maldonado2 years ago327/// <exception cref="ArgumentNullException"> <paramref name="fileId"/> is null. </exception>
328/// <exception cref="ArgumentException"> <paramref name="fileId"/> is an empty string, and was expected to be non-empty. </exception>
19a65a0aKrzysztof Cwalina2 years ago329public virtual ClientResult<BinaryData> DownloadFile(string fileId, CancellationToken cancellationToken = default)
9f9f2936Jose Arriaga Maldonado2 years ago330{
331Argument.AssertNotNullOrEmpty(fileId, nameof(fileId));
332
19a65a0aKrzysztof Cwalina2 years ago333ClientResult result = DownloadFile(fileId, cancellationToken.ToRequestOptions());
9f9f2936Jose Arriaga Maldonado2 years ago334return ClientResult.FromValue(result.GetRawResponse().Content, result.GetRawResponse());
335}
336}