// #nullable disable using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using OpenAI; namespace OpenAI.Responses { public partial class ResponsesClient { private static PipelineMessageClassifier _pipelineMessageClassifier200; private static PipelineMessageClassifier PipelineMessageClassifier200 => _pipelineMessageClassifier200 ??= PipelineMessageClassifier.Create(stackalloc ushort[] { 200 }); // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateCreateResponseRequest(BinaryContent content, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses", false); PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "POST", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json, text/event-stream"); request.Headers.Set("Content-Type", "application/json"); request.Content = content; message.Apply(options); return message; } // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateGetResponseRequest(string responseId, IEnumerable include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses/", false); uri.AppendPath(responseId, true); if (include != null && !(include is ChangeTrackingList changeTrackingList && changeTrackingList.IsUndefined)) { foreach (var @param in include) { uri.AppendQuery("include[]", @param.ToString(), true); } } if (stream != null) { uri.AppendQuery("stream", TypeFormatters.ConvertToString(stream), true); } if (startingAfter != null) { uri.AppendQuery("starting_after", TypeFormatters.ConvertToString(startingAfter), true); } if (includeObfuscation != null) { uri.AppendQuery("include_obfuscation", TypeFormatters.ConvertToString(includeObfuscation), true); } PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json, text/event-stream"); message.Apply(options); return message; } // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateDeleteResponseRequest(string responseId, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses/", false); uri.AppendPath(responseId, true); PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "DELETE", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json"); message.Apply(options); return message; } // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateCancelResponseRequest(string responseId, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses/", false); uri.AppendPath(responseId, true); uri.AppendPath("/cancel", false); PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "POST", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json"); message.Apply(options); return message; } // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateGetResponseInputItemsRequest(string responseId, int? limit, string order, string after, string before, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses/", false); uri.AppendPath(responseId, true); uri.AppendPath("/input_items", false); if (limit != null) { uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true); } if (order != null) { uri.AppendQuery("order", order, true); } if (after != null) { uri.AppendQuery("after", after, true); } if (before != null) { uri.AppendQuery("before", before, true); } PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json"); message.Apply(options); return message; } // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateGetInputTokenCountRequest(BinaryContent content, string contentType, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses/input_tokens", false); PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "POST", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Content-Type", contentType); request.Headers.Set("Accept", "application/json"); request.Content = content; message.Apply(options); return message; } // Plugin customization: make PipelineMessage creation methods virtual internal virtual PipelineMessage CreateCompactResponseRequest(BinaryContent content, string contentType, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/responses/compact", false); PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "POST", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Content-Type", contentType); request.Headers.Set("Accept", "application/json"); request.Content = content; message.Apply(options); return message; } } }