Generated the JSON contracts of providers, the runtime, and services at compile time (#1150)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-11-03 07:59:30 +01:00
1 parent e954881fda
commit 24e3c22db3
140 files changed
+1415 -292

No files matched your search

@@ -9,7 +9,7 @@ public abstract class ERIClientBase(IERIDataSource dataSource) : IDisposable
{
protected readonly IERIDataSource DataSource = dataSource;
protected static readonly JsonSerializerOptions JSON_OPTIONS = new()
internal static readonly JsonSerializerOptions JSON_OPTIONS = new JsonSerializerOptions
{
WriteIndented = true,
AllowTrailingCommas = true,
@@ -20,8 +20,9 @@ public abstract class ERIClientBase(IERIDataSource dataSource) : IDisposable
Converters =
{
new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseUpper),
}
};
},
TypeInfoResolver = ERIClientJsonContext.Default,
}.AsReadOnly();
protected readonly HttpClient HttpClient = ExternalHttpClientTimeout.CreateHttpClient(new Uri($"{dataSource.Hostname}:{dataSource.Port}"), ExternalHttpTrustPolicy.ALLOW_CUSTOM_ROOTS_WHEN_HOST_WHITELISTED);
@@ -0,0 +1,23 @@
using System.Text.Json.Serialization;
using AIStudio.Tools.ERIClient.DataModel;
namespace AIStudio.Tools.ERIClient;
/// <summary>
/// The contracts with which System.Text.Json reads and writes the calls to ERI servers, built at compile time.
/// </summary>
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Metadata)]
// The request:
[JsonSerializable(typeof(RetrievalRequest))]
// The answers:
[JsonSerializable(typeof(List<AuthScheme>))]
[JsonSerializable(typeof(AuthResponse))]
[JsonSerializable(typeof(DataSourceInfo))]
[JsonSerializable(typeof(List<EmbeddingInfo>))]
[JsonSerializable(typeof(List<RetrievalInfo>))]
[JsonSerializable(typeof(List<Context>))]
[JsonSerializable(typeof(SecurityRequirements))]
internal sealed partial class ERIClientJsonContext : JsonSerializerContext;