Skip to content

Commit 27c87ba

Browse files
committed
feat: add logging of upstream error
1 parent c8a5557 commit 27c87ba

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

Catglobe.CgScript.Runtime/CgScriptApiClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
using System.Text.Json;
44
using System.Text.Json.Serialization.Metadata;
55
using Catglobe.CgScript.Common;
6+
using Microsoft.Extensions.Logging;
67

78
namespace Catglobe.CgScript.Runtime;
89

9-
internal class CgScriptApiClient(HttpClient httpClient, IScriptMapping map) : ApiClientBase(httpClient)
10+
internal class CgScriptApiClient(HttpClient httpClient, IScriptMapping map, ILogger<ICgScriptApiClient> logger) : ApiClientBase(httpClient, logger)
1011
{
1112
protected override async ValueTask<string> GetPath(string scriptName, string? additionalParameters = null)
1213
{
@@ -18,6 +19,6 @@ protected override async ValueTask<string> GetPath(string scriptName, string? ad
1819
Task.FromResult(parameter is null ? default : JsonContent.Create(parameter, mediaType: null, jsonTypeInfo: callJsonTypeInfo));
1920

2021
[RequiresUnreferencedCode("JSON")]
21-
protected override Task<JsonContent?> GetJsonContent<TP>(string scriptName, TP? parameter, JsonSerializerOptions? options) where TP : default =>
22-
Task.FromResult<JsonContent?>(JsonContent.Create(parameter, mediaType: null, options));
22+
protected override Task<JsonContent?> GetJsonContent<TP>(string scriptName, TP? parameter, JsonSerializerOptions? jsonOptions) where TP : default =>
23+
Task.FromResult<JsonContent?>(JsonContent.Create(parameter, mediaType: null, jsonOptions));
2324
}

Catglobe.CgScript.Runtime/DevelopmentModeCgScriptApiClient.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
using System.Text.Json.Serialization;
55
using System.Text.Json.Serialization.Metadata;
66
using Catglobe.CgScript.Common;
7+
using Microsoft.Extensions.Logging;
78
using Microsoft.Extensions.Options;
89

910
namespace Catglobe.CgScript.Runtime;
1011

11-
internal partial class DevelopmentModeCgScriptApiClient(HttpClient httpClient, IScriptProvider scriptProvider, IOptions<CgScriptOptions> options) : ApiClientBase(httpClient)
12+
internal partial class DevelopmentModeCgScriptApiClient(HttpClient httpClient, IScriptProvider scriptProvider, IOptions<CgScriptOptions> options, ILogger<ICgScriptApiClient> logger) : ApiClientBase(httpClient, logger)
1213
{
1314
private IReadOnlyDictionary<string, IScriptDefinition>? _scriptDefinitions;
1415
private BaseCgScriptMaker? _cgScriptMaker;
@@ -26,12 +27,9 @@ protected override async ValueTask<string> GetPath(string scriptName, string? ad
2627
JsonContent.Create(new DynamicCgScript<TP>(scriptName, await GetScript(scriptName), parameter, callJsonTypeInfo), mediaType: null, jsonTypeInfo: DynamicCgScriptSerializer.Default.IDynamicScript);
2728

2829
[RequiresUnreferencedCode("JSON")]
29-
protected override async Task<JsonContent?> GetJsonContent<TP>(string scriptName, TP? parameter, JsonSerializerOptions? callJsonTypeInfo) where TP : default
30-
{
31-
var script = await GetScript(scriptName);
32-
33-
throw new NotImplementedException();
34-
}
30+
protected override async Task<JsonContent?> GetJsonContent<TP>(string scriptName, TP? parameter, JsonSerializerOptions? jsonOptions) where TP : default =>
31+
JsonContent.Create(new DynamicCgScriptUnreferenced<TP>(scriptName, await GetScript(scriptName), parameter, jsonOptions), mediaType: null,
32+
jsonTypeInfo: DynamicCgScriptSerializer.Default.IDynamicScript);
3533

3634
private Task<string> GetScript(string scriptName) => _cgScriptMaker!.GetContent(scriptName);
3735

@@ -44,15 +42,28 @@ internal interface IDynamicScript
4442
}
4543

4644
[JsonConverter(typeof(DynamicConverter))]
47-
internal record DynamicCgScript<T>(string ScriptName, string Script, T? Parameter, JsonTypeInfo<T> jsonTypeInfo) : IDynamicScript
45+
internal record DynamicCgScript<T>(string ScriptName, string Script, T? Parameter, JsonTypeInfo<T> JsonTypeInfo) : IDynamicScript
46+
{
47+
public void WriteParameter(Utf8JsonWriter writer)
48+
{
49+
writer.WritePropertyName("parameter");
50+
if (Parameter is null)
51+
writer.WriteNullValue();
52+
else
53+
JsonSerializer.Serialize(writer, Parameter, JsonTypeInfo);
54+
}
55+
}
56+
[JsonConverter(typeof(DynamicConverter))]
57+
[RequiresUnreferencedCode("JSON")]
58+
internal record DynamicCgScriptUnreferenced<T>(string ScriptName, string Script, T? Parameter, JsonSerializerOptions? Options) : IDynamicScript
4859
{
4960
public void WriteParameter(Utf8JsonWriter writer)
5061
{
5162
writer.WritePropertyName("parameter");
5263
if (Parameter is null)
5364
writer.WriteNullValue();
5465
else
55-
JsonSerializer.Serialize(writer, Parameter, jsonTypeInfo);
66+
JsonSerializer.Serialize(writer, Parameter, Parameter.GetType(), Options);
5667
}
5768
}
5869

0 commit comments

Comments
 (0)