openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/sub-pr-1011-another-one

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/Generated/Models/Audio/AudioTranslation.Serialization.cs

189lines · modecode

1// <auto-generated/>
2
3#nullable disable
4
5using System;
6using System.ClientModel;
7using System.ClientModel.Primitives;
8using System.Collections.Generic;
9using System.Diagnostics.CodeAnalysis;
10using System.Text.Json;
11using OpenAI;
12
13namespace OpenAI.Audio
14{
15 public partial class AudioTranslation : IJsonModel<AudioTranslation>
16 {
17 internal AudioTranslation() : this(null, default, null, null, null)
18 {
19 }
20
21 [Experimental("OPENAI001")]
22 protected virtual AudioTranslation PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options)
23 {
24 string format = options.Format == "W" ? ((IPersistableModel<AudioTranslation>)this).GetFormatFromOptions(options) : options.Format;
25 switch (format)
26 {
27 case "J":
28 using (JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions))
29 {
30 return DeserializeAudioTranslation(document.RootElement, options);
31 }
32 default:
33 throw new FormatException($"The model {nameof(AudioTranslation)} does not support reading '{options.Format}' format.");
34 }
35 }
36
37 [Experimental("OPENAI001")]
38 protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options)
39 {
40 string format = options.Format == "W" ? ((IPersistableModel<AudioTranslation>)this).GetFormatFromOptions(options) : options.Format;
41 switch (format)
42 {
43 case "J":
44 return ModelReaderWriter.Write(this, options, OpenAIContext.Default);
45 default:
46 throw new FormatException($"The model {nameof(AudioTranslation)} does not support writing '{options.Format}' format.");
47 }
48 }
49
50 BinaryData IPersistableModel<AudioTranslation>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);
51
52 AudioTranslation IPersistableModel<AudioTranslation>.Create(BinaryData data, ModelReaderWriterOptions options) => PersistableModelCreateCore(data, options);
53
54 string IPersistableModel<AudioTranslation>.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
55
56 [Experimental("OPENAI001")]
57 public static explicit operator AudioTranslation(ClientResult result)
58 {
59 PipelineResponse response = result.GetRawResponse();
60 using JsonDocument document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions);
61 return DeserializeAudioTranslation(document.RootElement, ModelSerializationExtensions.WireOptions);
62 }
63
64 void IJsonModel<AudioTranslation>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
65 {
66 writer.WriteStartObject();
67 JsonModelWriteCore(writer, options);
68 writer.WriteEndObject();
69 }
70
71 [Experimental("OPENAI001")]
72 protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
73 {
74 string format = options.Format == "W" ? ((IPersistableModel<AudioTranslation>)this).GetFormatFromOptions(options) : options.Format;
75 if (format != "J")
76 {
77 throw new FormatException($"The model {nameof(AudioTranslation)} does not support writing '{format}' format.");
78 }
79 if (_additionalBinaryDataProperties?.ContainsKey("language") != true)
80 {
81 writer.WritePropertyName("language"u8);
82 writer.WriteStringValue(Language);
83 }
84 if (_additionalBinaryDataProperties?.ContainsKey("duration") != true)
85 {
86 writer.WritePropertyName("duration"u8);
87 writer.WriteNumberValue(Duration.Value.TotalSeconds);
88 }
89 if (_additionalBinaryDataProperties?.ContainsKey("text") != true)
90 {
91 writer.WritePropertyName("text"u8);
92 writer.WriteStringValue(Text);
93 }
94 // Plugin customization: remove options.Format != "W" check
95 if (Optional.IsCollectionDefined(Segments) && _additionalBinaryDataProperties?.ContainsKey("segments") != true)
96 {
97 writer.WritePropertyName("segments"u8);
98 writer.WriteStartArray();
99 foreach (TranscribedSegment item in Segments)
100 {
101 writer.WriteObjectValue(item, options);
102 }
103 writer.WriteEndArray();
104 }
105 // Plugin customization: remove options.Format != "W" check
106 if (_additionalBinaryDataProperties != null)
107 {
108 foreach (var item in _additionalBinaryDataProperties)
109 {
110 if (ModelSerializationExtensions.IsSentinelValue(item.Value))
111 {
112 continue;
113 }
114 writer.WritePropertyName(item.Key);
115#if NET6_0_OR_GREATER
116 writer.WriteRawValue(item.Value);
117#else
118 using (JsonDocument document = JsonDocument.Parse(item.Value))
119 {
120 JsonSerializer.Serialize(writer, document.RootElement);
121 }
122#endif
123 }
124 }
125 }
126
127 AudioTranslation IJsonModel<AudioTranslation>.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => JsonModelCreateCore(ref reader, options);
128
129 [Experimental("OPENAI001")]
130 protected virtual AudioTranslation JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options)
131 {
132 string format = options.Format == "W" ? ((IPersistableModel<AudioTranslation>)this).GetFormatFromOptions(options) : options.Format;
133 if (format != "J")
134 {
135 throw new FormatException($"The model {nameof(AudioTranslation)} does not support reading '{format}' format.");
136 }
137 using JsonDocument document = JsonDocument.ParseValue(ref reader);
138 return DeserializeAudioTranslation(document.RootElement, options);
139 }
140
141 internal static AudioTranslation DeserializeAudioTranslation(JsonElement element, ModelReaderWriterOptions options)
142 {
143 if (element.ValueKind == JsonValueKind.Null)
144 {
145 return null;
146 }
147 string language = default;
148 TimeSpan? duration = default;
149 string text = default;
150 IReadOnlyList<TranscribedSegment> segments = default;
151 IDictionary<string, BinaryData> additionalBinaryDataProperties = new ChangeTrackingDictionary<string, BinaryData>();
152 foreach (var prop in element.EnumerateObject())
153 {
154 if (prop.NameEquals("language"u8))
155 {
156 language = prop.Value.GetString();
157 continue;
158 }
159 if (prop.NameEquals("duration"u8))
160 {
161 duration = TimeSpan.FromSeconds(prop.Value.GetDouble());
162 continue;
163 }
164 if (prop.NameEquals("text"u8))
165 {
166 text = prop.Value.GetString();
167 continue;
168 }
169 if (prop.NameEquals("segments"u8))
170 {
171 if (prop.Value.ValueKind == JsonValueKind.Null)
172 {
173 continue;
174 }
175 List<TranscribedSegment> array = new List<TranscribedSegment>();
176 foreach (var item in prop.Value.EnumerateArray())
177 {
178 array.Add(TranscribedSegment.DeserializeTranscribedSegment(item, options));
179 }
180 segments = array;
181 continue;
182 }
183 // Plugin customization: remove options.Format != "W" check
184 additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
185 }
186 return new AudioTranslation(language, duration, text, segments ?? new ChangeTrackingList<TranscribedSegment>(), additionalBinaryDataProperties);
187 }
188 }
189}
190