// Copyright Epic Games, Inc. All Rights Reserved.
using System.Text.Json;
using EpicGames.Core;
using EpicGames.Horde;
using EpicGames.Horde.Jobs;
namespace HordeServer.Utilities
{
///
/// Helper methods for json serialization
///
public static class JsonUtils
{
///
/// Default JSON serialization options
///
public static JsonSerializerOptions DefaultSerializerOptions { get; } = CreateDefaultJsonSerializerOptions();
static JsonSerializerOptions CreateDefaultJsonSerializerOptions()
{
JsonSerializerOptions options = new JsonSerializerOptions();
JsonUtils.ConfigureJsonSerializer(options);
options.MakeReadOnly(true);
return options;
}
///
/// Configure a json serializer with all standard Horde converters
///
public static void ConfigureJsonSerializer(JsonSerializerOptions options)
{
HordeHttpClient.ConfigureJsonSerializer(options);
options.Converters.Add(new ObjectIdJsonConverter());
options.Converters.Add(new ObjectIdJsonConverterFactory());
options.Converters.Add(new JsonKnownTypesConverterFactory());
options.Converters.Add(new SubResourceIdJsonConverterFactory());
options.Converters.Add(new DateTimeJsonConverter());
options.Converters.Add(new TimeSpanJsonConverter());
options.Converters.Add(new DateTimeOffsetJsonConverter());
}
}
}