• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / FluentRest / 9388947971

05 Jun 2024 05:56PM UTC coverage: 57.76% (+0.2%) from 57.587%
9388947971

push

github

pwelter34
fix flaky tests

277 of 614 branches covered (45.11%)

Branch coverage included in aggregate %.

847 of 1332 relevant lines covered (63.59%)

73.6 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/FluentRest/ProblemDetailsConverter.cs
1
using System.Text.Json;
2
using System.Text.Json.Serialization;
3

4
namespace FluentRest;
5

6
internal sealed class ProblemDetailsConverter : JsonConverter<ProblemDetails>
7
{
8
    private static readonly JsonEncodedText ProblemType = JsonEncodedText.Encode("type");
×
9
    private static readonly JsonEncodedText Title = JsonEncodedText.Encode("title");
×
10
    private static readonly JsonEncodedText Status = JsonEncodedText.Encode("status");
×
11
    private static readonly JsonEncodedText Detail = JsonEncodedText.Encode("detail");
×
12
    private static readonly JsonEncodedText Instance = JsonEncodedText.Encode("instance");
×
13

14
    public override ProblemDetails Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
15
    {
16
        var problemDetails = new ProblemDetails();
×
17

18
        if (reader.TokenType != JsonTokenType.StartObject)
×
19
            throw new JsonException("Unexcepted end when reading JSON.");
×
20

21
        while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
×
22
            ReadValue(ref reader, problemDetails, options);
×
23

24
        if (reader.TokenType != JsonTokenType.EndObject)
×
25
            throw new JsonException("Unexcepted end when reading JSON.");
×
26

27
        return problemDetails;
×
28
    }
29

30
    public override void Write(Utf8JsonWriter writer, ProblemDetails value, JsonSerializerOptions options)
31
    {
32
        writer.WriteStartObject();
×
33
        WriteProblemDetails(writer, value, options);
×
34
        writer.WriteEndObject();
×
35
    }
×
36

37
    internal static void ReadValue(ref Utf8JsonReader reader, ProblemDetails value, JsonSerializerOptions options)
38
    {
39
        if (TryReadStringProperty(ref reader, ProblemType, out var propertyValue))
×
40
        {
41
            value.Type = propertyValue;
×
42
        }
43
        else if (TryReadStringProperty(ref reader, Title, out propertyValue))
×
44
        {
45
            value.Title = propertyValue;
×
46
        }
47
        else if (TryReadStringProperty(ref reader, Detail, out propertyValue))
×
48
        {
49
            value.Detail = propertyValue;
×
50
        }
51
        else if (TryReadStringProperty(ref reader, Instance, out propertyValue))
×
52
        {
53
            value.Instance = propertyValue;
×
54
        }
55
        else if (reader.ValueTextEquals(Status.EncodedUtf8Bytes))
×
56
        {
57
            reader.Read();
×
58
            if (reader.TokenType != JsonTokenType.Null)
×
59
                value.Status = reader.GetInt32();
×
60
        }
61
        else
62
        {
63
            var key = reader.GetString()!;
×
64
            reader.Read();
×
65
            value.Extensions[key] = JsonSerializer.Deserialize(ref reader, typeof(object), options);
×
66
        }
67
    }
×
68

69
    internal static bool TryReadStringProperty(ref Utf8JsonReader reader, JsonEncodedText propertyName, out string value)
70
    {
71
        if (!reader.ValueTextEquals(propertyName.EncodedUtf8Bytes))
×
72
        {
73
            value = default;
×
74
            return false;
×
75
        }
76

77
        reader.Read();
×
78
        value = reader.GetString()!;
×
79
        return true;
×
80
    }
81

82
    internal static void WriteProblemDetails(Utf8JsonWriter writer, ProblemDetails value, JsonSerializerOptions options)
83
    {
84
        if (value.Type != null)
×
85
            writer.WriteString(ProblemType, value.Type);
×
86

87
        if (value.Title != null)
×
88
            writer.WriteString(Title, value.Title);
×
89

90
        if (value.Status != null)
×
91
            writer.WriteNumber(Status, value.Status.Value);
×
92

93
        if (value.Detail != null)
×
94
            writer.WriteString(Detail, value.Detail);
×
95

96
        if (value.Instance != null)
×
97
            writer.WriteString(Instance, value.Instance);
×
98

99
        foreach (var kvp in value.Extensions)
×
100
        {
101
            writer.WritePropertyName(kvp.Key);
×
102
            JsonSerializer.Serialize(writer, kvp.Value, kvp.Value?.GetType() ?? typeof(object), options);
×
103
        }
104
    }
×
105
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc