using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
using JorgeSerrano.Json;
namespace Recyclarr.Json;
public static class GlobalJsonSerializerSettings
{
///
/// JSON settings used for starr service API payloads.
///
public static JsonSerializerOptions Services { get; } = new()
{
// This makes sure that null properties, such as maxSize and preferredSize in Radarr
// Quality Definitions, do not get written out to JSON request bodies.
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
NumberHandling = JsonNumberHandling.AllowReadingFromString,
TypeInfoResolver = new DefaultJsonTypeInfoResolver
{
Modifiers = {JsonSerializationModifiers.IgnoreNoSerializeAttribute}
}
};
///
/// JSON settings used by cache and other Recyclarr-owned JSON files.
///
public static JsonSerializerOptions Recyclarr { get; } = new()
{
PropertyNamingPolicy = new JsonSnakeCaseNamingPolicy(),
WriteIndented = true
};
///
/// JSON settings used by Trash Guides JSON files.
///
public static JsonSerializerOptions Guide { get; } = new()
{
PropertyNamingPolicy = new JsonSnakeCaseNamingPolicy(),
NumberHandling = JsonNumberHandling.AllowReadingFromString
};
}