Files
AI-Studio/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs
T

39 lines
1.2 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
using AIStudio.Settings;
namespace AIStudio.Tools.ERIClient;
public abstract class ERIClientBase(IERIDataSource dataSource) : IDisposable
{
protected readonly IERIDataSource DataSource = dataSource;
internal static readonly JsonSerializerOptions JSON_OPTIONS = new JsonSerializerOptions
{
WriteIndented = true,
AllowTrailingCommas = true,
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,
UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow,
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);
protected string SecurityToken = string.Empty;
#region Implementation of IDisposable
public void Dispose()
{
this.HttpClient.Dispose();
}
#endregion
}