Skip to content

Commit 53a0092

Browse files
committed
fix SA1649
1 parent 26d3e78 commit 53a0092

7 files changed

+131
-112
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
4+
namespace k8s.Models
5+
{
6+
internal class IntOrStringConverter : JsonConverter
7+
{
8+
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
9+
{
10+
var s = (value as IntstrIntOrString)?.Value;
11+
12+
if (int.TryParse(s, out var intv))
13+
{
14+
serializer.Serialize(writer, intv);
15+
return;
16+
}
17+
18+
serializer.Serialize(writer, s);
19+
}
20+
21+
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
22+
JsonSerializer serializer)
23+
{
24+
return (IntstrIntOrString)serializer.Deserialize<string>(reader);
25+
}
26+
27+
public override bool CanConvert(Type objectType)
28+
{
29+
return objectType == typeof(int) || objectType == typeof(string);
30+
}
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System;
2+
using YamlDotNet.Core;
3+
using YamlDotNet.Serialization;
4+
5+
namespace k8s.Models
6+
{
7+
public class IntOrStringYamlConverter : IYamlTypeConverter
8+
{
9+
public bool Accepts(Type type)
10+
{
11+
return type == typeof(IntstrIntOrString);
12+
}
13+
14+
public object ReadYaml(IParser parser, Type type)
15+
{
16+
if (parser.Current is YamlDotNet.Core.Events.Scalar scalar)
17+
{
18+
try
19+
{
20+
if (string.IsNullOrEmpty(scalar.Value))
21+
{
22+
return null;
23+
}
24+
25+
return new IntstrIntOrString(scalar.Value);
26+
}
27+
finally
28+
{
29+
parser.MoveNext();
30+
}
31+
}
32+
33+
throw new InvalidOperationException(parser.Current?.ToString());
34+
}
35+
36+
public void WriteYaml(IEmitter emitter, object value, Type type)
37+
{
38+
var obj = (IntstrIntOrString)value;
39+
emitter.Emit(new YamlDotNet.Core.Events.Scalar(obj.Value));
40+
}
41+
}
42+
}

src/KubernetesClient/IntstrIntOrString.cs

-65
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,10 @@
11
using System;
22
using Newtonsoft.Json;
3-
using YamlDotNet.Core;
43
using YamlDotNet.Core.Events;
54
using YamlDotNet.Core.Tokens;
6-
using YamlDotNet.Serialization;
75

86
namespace k8s.Models
97
{
10-
public class IntOrStringYamlConverter : IYamlTypeConverter
11-
{
12-
public bool Accepts(Type type)
13-
{
14-
return type == typeof(IntstrIntOrString);
15-
}
16-
17-
public object ReadYaml(IParser parser, Type type)
18-
{
19-
if (parser.Current is YamlDotNet.Core.Events.Scalar scalar)
20-
{
21-
try
22-
{
23-
if (string.IsNullOrEmpty(scalar.Value))
24-
{
25-
return null;
26-
}
27-
28-
return new IntstrIntOrString(scalar.Value);
29-
}
30-
finally
31-
{
32-
parser.MoveNext();
33-
}
34-
}
35-
36-
throw new InvalidOperationException(parser.Current?.ToString());
37-
}
38-
39-
public void WriteYaml(IEmitter emitter, object value, Type type)
40-
{
41-
var obj = (IntstrIntOrString)value;
42-
emitter.Emit(new YamlDotNet.Core.Events.Scalar(obj.Value));
43-
}
44-
}
45-
46-
internal class IntOrStringConverter : JsonConverter
47-
{
48-
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
49-
{
50-
var s = (value as IntstrIntOrString)?.Value;
51-
52-
if (int.TryParse(s, out var intv))
53-
{
54-
serializer.Serialize(writer, intv);
55-
return;
56-
}
57-
58-
serializer.Serialize(writer, s);
59-
}
60-
61-
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
62-
JsonSerializer serializer)
63-
{
64-
return (IntstrIntOrString)serializer.Deserialize<string>(reader);
65-
}
66-
67-
public override bool CanConvert(Type objectType)
68-
{
69-
return objectType == typeof(int) || objectType == typeof(string);
70-
}
71-
}
72-
738
[JsonConverter(typeof(IntOrStringConverter))]
749
public partial class IntstrIntOrString
7510
{
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
4+
namespace k8s.Models
5+
{
6+
internal class QuantityConverter : JsonConverter
7+
{
8+
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
9+
{
10+
var q = (ResourceQuantity)value;
11+
12+
if (q != null)
13+
{
14+
serializer.Serialize(writer, q.ToString());
15+
return;
16+
}
17+
18+
serializer.Serialize(writer, value);
19+
}
20+
21+
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
22+
JsonSerializer serializer)
23+
{
24+
return new ResourceQuantity(serializer.Deserialize<string>(reader));
25+
}
26+
27+
public override bool CanConvert(Type objectType)
28+
{
29+
return objectType == typeof(string);
30+
}
31+
}
32+
}

src/KubernetesClient/ResourceQuantity.cs

-27
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,6 @@
1111

1212
namespace k8s.Models
1313
{
14-
internal class QuantityConverter : JsonConverter
15-
{
16-
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
17-
{
18-
var q = (ResourceQuantity)value;
19-
20-
if (q != null)
21-
{
22-
serializer.Serialize(writer, q.ToString());
23-
return;
24-
}
25-
26-
serializer.Serialize(writer, value);
27-
}
28-
29-
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
30-
JsonSerializer serializer)
31-
{
32-
return new ResourceQuantity(serializer.Deserialize<string>(reader));
33-
}
34-
35-
public override bool CanConvert(Type objectType)
36-
{
37-
return objectType == typeof(string);
38-
}
39-
}
40-
4114
/// <summary>
4215
/// port https://github.com/kubernetes/apimachinery/blob/master/pkg/api/resource/quantity.go to c#
4316
/// Quantity is a fixed-point representation of a number.

src/KubernetesClient/V1Patch.cs

-20
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,6 @@
44

55
namespace k8s.Models
66
{
7-
internal class V1PathJsonConverter : JsonConverter
8-
{
9-
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
10-
{
11-
serializer.Serialize(writer, (value as V1Patch)?.Content);
12-
}
13-
14-
// no read patch object supported at the moment
15-
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
16-
JsonSerializer serializer)
17-
{
18-
throw new NotImplementedException();
19-
}
20-
21-
public override bool CanConvert(Type objectType)
22-
{
23-
return objectType == typeof(V1Patch);
24-
}
25-
}
26-
277
[JsonConverter(typeof(V1PathJsonConverter))]
288
public partial class V1Patch
299
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
4+
namespace k8s.Models
5+
{
6+
internal class V1PathJsonConverter : JsonConverter
7+
{
8+
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
9+
{
10+
serializer.Serialize(writer, (value as V1Patch)?.Content);
11+
}
12+
13+
// no read patch object supported at the moment
14+
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
15+
JsonSerializer serializer)
16+
{
17+
throw new NotImplementedException();
18+
}
19+
20+
public override bool CanConvert(Type objectType)
21+
{
22+
return objectType == typeof(V1Patch);
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)