Skip to content

Commit 89959ce

Browse files
committed
expose JsonSerializerOptions prop to let client change it
1 parent 4b2aa3d commit 89959ce

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

src/SocketIOClient/V2/Serializer/SystemTextJson/SystemJsonSerializer.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ namespace SocketIOClient.V2.Serializer.SystemTextJson;
1111

1212
public class SystemJsonSerializer : BaseJsonSerializer
1313
{
14-
public SystemJsonSerializer(IDecapsulable decapsulator, JsonSerializerOptions options) : base(decapsulator)
14+
public SystemJsonSerializer(IDecapsulable decapsulator) : base(decapsulator)
1515
{
16-
_options = options;
16+
JsonSerializerOptions = new JsonSerializerOptions();
1717
}
1818

19-
private readonly JsonSerializerOptions _options;
19+
public JsonSerializerOptions JsonSerializerOptions { get; set; }
2020
public IEngineIOMessageAdapter EngineIOMessageAdapter { get; set; }
2121

2222
private JsonSerializerOptions NewOptions(JsonConverter converter)
2323
{
24-
var newOptions = new JsonSerializerOptions(_options);
24+
var newOptions = new JsonSerializerOptions(JsonSerializerOptions);
2525
newOptions.Converters.Add(converter);
2626
return newOptions;
2727
}
@@ -93,23 +93,23 @@ private SystemJsonEventMessage NewEventMessage(string text)
9393
{
9494
var result = Decapsulator.DecapsulateEventMessage(text);
9595
var message = new SystemJsonEventMessage();
96-
SetEventMessageProperties(result, message, _options);
96+
SetEventMessageProperties(result, message, JsonSerializerOptions);
9797
return message;
9898
}
9999

100100
private ISystemJsonAckMessage NewAckMessage(string text)
101101
{
102102
var result = Decapsulator.DecapsulateEventMessage(text);
103103
var message = new SystemJsonAckMessage();
104-
SetAckMessageProperties(result, message, _options);
104+
SetAckMessageProperties(result, message, JsonSerializerOptions);
105105
return message;
106106
}
107107

108108
private SystemJsonBinaryEventMessage NewBinaryEventMessage(string text)
109109
{
110110
var result = Decapsulator.DecapsulateBinaryEventMessage(text);
111111
var message = new SystemJsonBinaryEventMessage();
112-
SetEventMessageProperties(result, message, _options);
112+
SetEventMessageProperties(result, message, JsonSerializerOptions);
113113
SetByteProperties(message, result.BytesCount);
114114
return message;
115115
}
@@ -124,7 +124,7 @@ private ISystemJsonAckMessage NewBinaryAckMessage(string text)
124124
{
125125
var result = Decapsulator.DecapsulateBinaryEventMessage(text);
126126
var message = new SystemJsonBinaryAckMessage();
127-
SetAckMessageProperties(result, message, _options);
127+
SetAckMessageProperties(result, message, JsonSerializerOptions);
128128
SetByteProperties(message, result.BytesCount);
129129
return message;
130130
}

tests/SocketIOClient.UnitTests/V2/Serializer/SystemTextJson/SystemJsonSerializerTests.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class SystemJsonSerializerTests
1717
{
1818
public SystemJsonSerializerTests()
1919
{
20-
_serializer = new SystemJsonSerializer(_realDecapsulator, new JsonSerializerOptions());
20+
_serializer = new SystemJsonSerializer(_realDecapsulator);
2121
}
2222

2323
private readonly SystemJsonSerializer _serializer;
@@ -34,7 +34,7 @@ public void Serialize_DataOnlyAndDataIsNull_ThrowArgumentNullException()
3434
[Fact]
3535
public void Serialize_DataOnlyAndDataIsEmpty_ThrowArgumentException()
3636
{
37-
_serializer.Invoking(x => x.Serialize(Array.Empty<object>()))
37+
_serializer.Invoking(x => x.Serialize([]))
3838
.Should()
3939
.Throw<ArgumentException>();
4040
}
@@ -200,11 +200,13 @@ public static TheoryData<object[], IEnumerable<ProtocolMessage>> SerializeDataOn
200200
[MemberData(nameof(SerializeDataOnlyCases))]
201201
public void Serialize_DataOnly_AlwaysPass(object[] data, IEnumerable<ProtocolMessage> expected)
202202
{
203-
var options = new JsonSerializerOptions
203+
var serializer = new SystemJsonSerializer(_realDecapsulator)
204204
{
205-
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
205+
JsonSerializerOptions = new JsonSerializerOptions
206+
{
207+
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
208+
},
206209
};
207-
var serializer = new SystemJsonSerializer(_realDecapsulator, options);
208210
serializer.Serialize(data).Should().BeEquivalentTo(expected);
209211
}
210212

@@ -460,7 +462,7 @@ public void Deserialize_DecapsulationResultFalse_ReturnNull()
460462
{
461463
Success = false,
462464
});
463-
var serializer = new SystemJsonSerializer(decapsulator, new JsonSerializerOptions());
465+
var serializer = new SystemJsonSerializer(decapsulator);
464466
const string text = "0{\"sid\":\"123\",\"upgrades\":[\"websocket\"],\"pingInterval\":10000,\"pingTimeout\":5000}";
465467

466468
serializer.Deserialize(text).Should().BeNull();

0 commit comments

Comments
 (0)