From a5cdeaabc0aa52c3845afc8e2d1e1424f315c628 Mon Sep 17 00:00:00 2001 From: Florian Bernd Date: Thu, 11 Dec 2025 10:58:57 +0100 Subject: [PATCH] Use `System.Text.Json` source generation --- .../Elastic.Ephemeral.Example.csproj | 2 +- src/Elastic.Stack.ArtifactsApi/Resolvers/ApiResolver.cs | 6 +++++- .../Resolvers/SnapshotApiResolver.cs | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/Elastic.Ephemeral.Example/Elastic.Ephemeral.Example.csproj b/examples/Elastic.Ephemeral.Example/Elastic.Ephemeral.Example.csproj index c307ffc..b5b8ea6 100644 --- a/examples/Elastic.Ephemeral.Example/Elastic.Ephemeral.Example.csproj +++ b/examples/Elastic.Ephemeral.Example/Elastic.Ephemeral.Example.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Elastic.Stack.ArtifactsApi/Resolvers/ApiResolver.cs b/src/Elastic.Stack.ArtifactsApi/Resolvers/ApiResolver.cs index 7d097df..6c5235f 100644 --- a/src/Elastic.Stack.ArtifactsApi/Resolvers/ApiResolver.cs +++ b/src/Elastic.Stack.ArtifactsApi/Resolvers/ApiResolver.cs @@ -74,7 +74,7 @@ public static string LatestBuildHash(string version) try { // if packages is empty it turns into an array[] otherwise its a dictionary :/ - var packages = JsonSerializer.Deserialize(json).Packages; + var packages = JsonSerializer.Deserialize(json, ApiResolverSerializerContext.Default.ArtifactsSearchResponse).Packages; if (packages.Count == 0) throw new Exception("Can not get build hash for: " + version); return GetBuildHash(packages.First().Value.DownloadUrl); @@ -123,4 +123,8 @@ internal class SearchPackage [JsonPropertyName("os")] public string[] OperatingSystem { get; set; } [JsonPropertyName("classifier")] public string Classifier { get; set; } } + + [JsonSerializable(typeof(ArtifactsVersionsResponse))] + [JsonSerializable(typeof(ArtifactsSearchResponse))] + internal sealed partial class ApiResolverSerializerContext : JsonSerializerContext; } diff --git a/src/Elastic.Stack.ArtifactsApi/Resolvers/SnapshotApiResolver.cs b/src/Elastic.Stack.ArtifactsApi/Resolvers/SnapshotApiResolver.cs index 8b4e418..d441d76 100644 --- a/src/Elastic.Stack.ArtifactsApi/Resolvers/SnapshotApiResolver.cs +++ b/src/Elastic.Stack.ArtifactsApi/Resolvers/SnapshotApiResolver.cs @@ -45,7 +45,7 @@ public static bool TryResolve(Product product, Version version, OSPlatform os, s { var json = ApiResolver.FetchJson($"search/{version}/{query}"); // if packages is empty it turns into an array[] otherwise its a dictionary :/ - packages = JsonSerializer.Deserialize(json).Packages; + packages = JsonSerializer.Deserialize(json, ApiResolverSerializerContext.Default.ArtifactsSearchResponse).Packages; } catch { @@ -82,7 +82,7 @@ public static bool TryResolve(Product product, Version version, OSPlatform os, s private static IReadOnlyCollection LoadVersions() { var json = ApiResolver.FetchJson("versions"); - var versions = JsonSerializer.Deserialize(json).Versions; + var versions = JsonSerializer.Deserialize(json, ApiResolverSerializerContext.Default.ArtifactsVersionsResponse).Versions; return new List(versions.Select(v => new Version(v))); }