Skip to content

Commit 57cfd7b

Browse files
hypernoobmattqs
authored andcommitted
Fixed non-String and non-Bytes values not sent in JSON with binary data (#112)
1 parent ba50d00 commit 57cfd7b

File tree

1 file changed

+49
-45
lines changed
  • Src/SocketIoClientDotNet.net45/Parser

1 file changed

+49
-45
lines changed

Src/SocketIoClientDotNet.net45/Parser/Binary.cs

+49-45
Original file line numberDiff line numberDiff line change
@@ -25,66 +25,70 @@ public static DeconstructedPacket DeconstructPacket(Packet packet)
2525

2626
private static JToken _deconstructPacket(object data, List<byte[]> buffers)
2727
{
28-
if (data == null) return null;
28+
if (data == null)
29+
{
30+
return null;
31+
}
2932

3033
if (data is byte[])
3134
{
32-
var byteArray = (byte[]) data;
35+
var byteArray = (byte[])data;
3336
return AddPlaceholder(buffers, byteArray);
3437
}
35-
if (data is JArray)
36-
{
37-
var newData = new JArray();
38-
var _data = (JArray) data;
39-
int len = _data.Count;
40-
for (int i = 0; i < len; i ++)
41-
{
42-
try
43-
{
44-
newData.Add( _deconstructPacket(_data[i], buffers));
45-
}
46-
catch (Exception)
47-
{
48-
return null;
49-
}
50-
}
51-
return newData;
52-
}
53-
if (!(data is JToken))
38+
39+
var jToken = data as JToken;
40+
if (jToken == null)
5441
{
5542
throw new NotImplementedException();
5643
}
57-
var jtoken = (JToken) data;
58-
if (jtoken.Type == JTokenType.String)
59-
{
60-
return jtoken.Value<string>();
61-
}
62-
else if (jtoken.Type == JTokenType.Bytes)
63-
{
64-
var byteArray = jtoken.Value<byte[]>();
65-
return AddPlaceholder(buffers, byteArray);
66-
}
67-
else if (jtoken.Type == JTokenType.Object)
68-
{
6944

70-
var newData2 = new JObject();
71-
var _data2 = (JObject)jtoken;
72-
73-
foreach (var property in _data2.Properties())
74-
{
75-
try
45+
switch (jToken.Type)
46+
{
47+
case JTokenType.Object:
48+
var newJObject = new JObject();
49+
var jObject = (JObject)jToken;
50+
foreach (var property in jObject.Properties())
7651
{
77-
newData2[property.Name] = _deconstructPacket(property.Value, buffers);
52+
try
53+
{
54+
newJObject[property.Name] = _deconstructPacket(property.Value, buffers);
55+
}
56+
catch (Exception)
57+
{
58+
return null;
59+
}
7860
}
79-
catch (Exception)
61+
return newJObject;
62+
63+
case JTokenType.Array:
64+
var newJArray = new JArray();
65+
var jArray = (JArray)jToken;
66+
for (int i = 0; i < jArray.Count; i++)
8067
{
81-
return null;
68+
try
69+
{
70+
newJArray.Add(_deconstructPacket(jArray[i], buffers));
71+
}
72+
catch (Exception)
73+
{
74+
return null;
75+
}
8276
}
77+
return newJArray;
8378

84-
}
85-
return newData2;
79+
case JTokenType.Bytes:
80+
var byteArray = jToken.Value<byte[]>();
81+
return AddPlaceholder(buffers, byteArray);
82+
83+
case JTokenType.None:
84+
case JTokenType.Constructor:
85+
case JTokenType.Property:
86+
case JTokenType.Comment:
87+
throw new NotImplementedException();
88+
89+
default:
90+
return jToken;
8691
}
87-
throw new NotImplementedException();
8892
}
8993

9094
private static JToken AddPlaceholder(List<byte[]> buffers, byte[] byteArray)

0 commit comments

Comments
 (0)