// #nullable disable using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using OpenAI; namespace OpenAI.Responses { [Experimental("OPENAI001")] public partial class ResponsesClient { private readonly Uri _endpoint; protected ResponsesClient() { } internal ResponsesClient(ClientPipeline pipeline, Uri endpoint) { _endpoint = endpoint; Pipeline = pipeline; } public ClientPipeline Pipeline { get; } public virtual ClientResult CreateResponse(BinaryContent content, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateCreateResponseRequest(content, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task CreateResponseAsync(BinaryContent content, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateCreateResponseRequest(content, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult GetResponse(string responseId, IEnumerable include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); using PipelineMessage message = CreateGetResponseRequest(responseId, include, stream, startingAfter, includeObfuscation, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task GetResponseAsync(string responseId, IEnumerable include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); using PipelineMessage message = CreateGetResponseRequest(responseId, include, stream, startingAfter, includeObfuscation, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult DeleteResponse(string responseId, RequestOptions options) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); using PipelineMessage message = CreateDeleteResponseRequest(responseId, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task DeleteResponseAsync(string responseId, RequestOptions options) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); using PipelineMessage message = CreateDeleteResponseRequest(responseId, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult DeleteResponse(string responseId, CancellationToken cancellationToken = default) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); ClientResult result = DeleteResponse(responseId, cancellationToken.ToRequestOptions()); return ClientResult.FromValue((ResponseDeletionResult)result, result.GetRawResponse()); } public virtual async Task> DeleteResponseAsync(string responseId, CancellationToken cancellationToken = default) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); ClientResult result = await DeleteResponseAsync(responseId, cancellationToken.ToRequestOptions()).ConfigureAwait(false); return ClientResult.FromValue((ResponseDeletionResult)result, result.GetRawResponse()); } public virtual ClientResult CancelResponse(string responseId, RequestOptions options) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); using PipelineMessage message = CreateCancelResponseRequest(responseId, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task CancelResponseAsync(string responseId, RequestOptions options) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); using PipelineMessage message = CreateCancelResponseRequest(responseId, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult CancelResponse(string responseId, CancellationToken cancellationToken = default) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); ClientResult result = CancelResponse(responseId, cancellationToken.ToRequestOptions()); return ClientResult.FromValue((ResponseResult)result, result.GetRawResponse()); } public virtual async Task> CancelResponseAsync(string responseId, CancellationToken cancellationToken = default) { Argument.AssertNotNullOrEmpty(responseId, nameof(responseId)); ClientResult result = await CancelResponseAsync(responseId, cancellationToken.ToRequestOptions()).ConfigureAwait(false); return ClientResult.FromValue((ResponseResult)result, result.GetRawResponse()); } public virtual ClientResult GetInputTokenCount(BinaryContent content, string contentType, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateGetInputTokenCountRequest(content, contentType, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task GetInputTokenCountAsync(BinaryContent content, string contentType, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateGetInputTokenCountRequest(content, contentType, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } public virtual ClientResult CompactResponse(BinaryContent content, string contentType, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateCompactResponseRequest(content, contentType, options); return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } public virtual async Task CompactResponseAsync(BinaryContent content, string contentType, RequestOptions options = null) { Argument.AssertNotNull(content, nameof(content)); using PipelineMessage message = CreateCompactResponseRequest(content, contentType, options); return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); } } }