mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-22 17:40:33 +01:00
Fix Sonar issues
This commit is contained in:
@@ -72,7 +72,7 @@ namespace WireMock.Matchers
|
|||||||
switch (input)
|
switch (input)
|
||||||
{
|
{
|
||||||
case JObject valueAsJObject:
|
case JObject valueAsJObject:
|
||||||
value = valueAsJObject; // valueAsJObject.ToObject<object>();
|
value = valueAsJObject;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -32,100 +32,116 @@ namespace WireMock.Util
|
|||||||
{
|
{
|
||||||
if (node.Type == JTokenType.Object)
|
if (node.Type == JTokenType.Object)
|
||||||
{
|
{
|
||||||
var childLines = new List<string>();
|
ProcessObject(node, propertyName, lines);
|
||||||
var text = new StringBuilder("new (");
|
|
||||||
|
|
||||||
// In case of Object, loop all children. Do a ToArray() to avoid `Collection was modified` exceptions.
|
|
||||||
foreach (JProperty child in node.Children<JProperty>().ToArray())
|
|
||||||
{
|
|
||||||
WalkNode(child.Value, child.Path, child.Name, childLines);
|
|
||||||
}
|
|
||||||
|
|
||||||
text.Append(string.Join(", ", childLines));
|
|
||||||
text.Append(")");
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(propertyName))
|
|
||||||
{
|
|
||||||
text.AppendFormat(" as {0}", propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
lines.Add(text.ToString());
|
|
||||||
}
|
}
|
||||||
else if (node.Type == JTokenType.Array)
|
else if (node.Type == JTokenType.Array)
|
||||||
{
|
{
|
||||||
var items = new List<string>();
|
ProcessArray(node, propertyName, lines);
|
||||||
var text = new StringBuilder("(new [] { ");
|
|
||||||
|
|
||||||
// In case of Array, loop all items. Do a ToArray() to avoid `Collection was modified` exceptions.
|
|
||||||
int idx = 0;
|
|
||||||
foreach (JToken child in node.Children().ToArray())
|
|
||||||
{
|
|
||||||
WalkNode(child, $"{node.Path}[{idx}]", null, items);
|
|
||||||
idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
text.Append(string.Join(", ", items));
|
|
||||||
text.Append("})");
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(propertyName))
|
|
||||||
{
|
|
||||||
text.AppendFormat(" as {0}", propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
lines.Add(text.ToString());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string castText = string.Empty;
|
ProcessItem(node, path, propertyName, lines);
|
||||||
switch (node.Type)
|
|
||||||
{
|
|
||||||
case JTokenType.Boolean:
|
|
||||||
castText = $"bool({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.Date:
|
|
||||||
castText = $"DateTime({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.Float:
|
|
||||||
castText = $"double({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.Guid:
|
|
||||||
castText = $"Guid({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.Integer:
|
|
||||||
castText = $"int({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.Null:
|
|
||||||
castText = "null";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.String:
|
|
||||||
castText = $"string({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.TimeSpan:
|
|
||||||
castText = $"TimeSpan({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case JTokenType.Uri:
|
|
||||||
castText = $"Uri({path})";
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new NotSupportedException($"JTokenType '{node.Type}' cannot be converted to a Dynamic Linq cast operator.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(propertyName))
|
|
||||||
{
|
|
||||||
castText += $" as {propertyName}";
|
|
||||||
}
|
|
||||||
|
|
||||||
lines.Add(castText);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void ProcessObject(JToken node, string propertyName, List<string> lines)
|
||||||
|
{
|
||||||
|
var items = new List<string>();
|
||||||
|
var text = new StringBuilder("new (");
|
||||||
|
|
||||||
|
// In case of Object, loop all children. Do a ToArray() to avoid `Collection was modified` exceptions.
|
||||||
|
foreach (JProperty child in node.Children<JProperty>().ToArray())
|
||||||
|
{
|
||||||
|
WalkNode(child.Value, child.Path, child.Name, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
text.Append(string.Join(", ", items));
|
||||||
|
text.Append(")");
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(propertyName))
|
||||||
|
{
|
||||||
|
text.AppendFormat(" as {0}", propertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
lines.Add(text.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ProcessArray(JToken node, string propertyName, List<string> lines)
|
||||||
|
{
|
||||||
|
var items = new List<string>();
|
||||||
|
var text = new StringBuilder("(new [] { ");
|
||||||
|
|
||||||
|
// In case of Array, loop all items. Do a ToArray() to avoid `Collection was modified` exceptions.
|
||||||
|
int idx = 0;
|
||||||
|
foreach (JToken child in node.Children().ToArray())
|
||||||
|
{
|
||||||
|
WalkNode(child, $"{node.Path}[{idx}]", null, items);
|
||||||
|
idx++;
|
||||||
|
}
|
||||||
|
|
||||||
|
text.Append(string.Join(", ", items));
|
||||||
|
text.Append("})");
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(propertyName))
|
||||||
|
{
|
||||||
|
text.AppendFormat(" as {0}", propertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
lines.Add(text.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ProcessItem(JToken node, string path, string propertyName, List<string> lines)
|
||||||
|
{
|
||||||
|
string castText = string.Empty;
|
||||||
|
switch (node.Type)
|
||||||
|
{
|
||||||
|
case JTokenType.Boolean:
|
||||||
|
castText = $"bool({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.Date:
|
||||||
|
castText = $"DateTime({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.Float:
|
||||||
|
castText = $"double({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.Guid:
|
||||||
|
castText = $"Guid({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.Integer:
|
||||||
|
castText = $"int({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.Null:
|
||||||
|
castText = "null";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.String:
|
||||||
|
castText = $"string({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.TimeSpan:
|
||||||
|
castText = $"TimeSpan({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case JTokenType.Uri:
|
||||||
|
castText = $"Uri({path})";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new NotSupportedException(
|
||||||
|
$"JTokenType '{node.Type}' cannot be converted to a Dynamic Linq cast operator.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(propertyName))
|
||||||
|
{
|
||||||
|
castText += $" as {propertyName}";
|
||||||
|
}
|
||||||
|
|
||||||
|
lines.Add(castText);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user