60 lines
1.4 KiB
C#
60 lines
1.4 KiB
C#
using Newtonsoft.Json.Linq;
|
|
using System.Linq;
|
|
|
|
namespace Quobject.SocketIoClientDotNet.Modules
|
|
{
|
|
public static class HasBinaryData
|
|
{
|
|
public static bool HasBinary(object data)
|
|
{
|
|
return RecursiveCheckForBinary(data);
|
|
}
|
|
|
|
private static bool RecursiveCheckForBinary(object obj)
|
|
{
|
|
if (obj == null || obj is string)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (obj is byte[])
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
var array = obj as JArray;
|
|
if (array != null)
|
|
{
|
|
if (array.Any(token => RecursiveCheckForBinary(token)))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
var jobject = obj as JObject;
|
|
if (jobject != null)
|
|
{
|
|
if (jobject.Children().Any(child => RecursiveCheckForBinary(child)))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
var jvalue = obj as JValue;
|
|
if (jvalue != null)
|
|
{
|
|
return RecursiveCheckForBinary(jvalue.Value);
|
|
}
|
|
|
|
var jprop = obj as JProperty;
|
|
if (jprop != null)
|
|
{
|
|
return RecursiveCheckForBinary(jprop.Value);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|