Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/AzureDevopsTracker.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
<PackageLicenseFile>LICENSE.md.txt</PackageLicenseFile>
<Description>A NuGet that allows you to use a Azure DevOps Service Hook to track workitems changes in a simply and detailed way.</Description>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<FileVersion>8.0.2</FileVersion>
<Version>8.0.2</Version>
<FileVersion>8.0.3</FileVersion>
<Version>8.0.3</Version>
<PackageReleaseNotes></PackageReleaseNotes>
</PropertyGroup>

Expand Down
37 changes: 16 additions & 21 deletions src/Helpers/ReadJsonHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,35 @@ namespace AzureDevopsTracker.Helpers
{
public static class ReadJsonHelper
{

public static IEnumerable<WorkItemCustomField> ReadJson(string workItemId, string jsonTexto)
{
try
{
JObject json = JObject.Parse(jsonTexto);
JObject? fields = json.SelectToken("resource.revision.fields") as JObject;
if (fields == null)
{
return Enumerable.Empty<WorkItemCustomField>();
}
var workItemCustomFields = new List<WorkItemCustomField>();
foreach (KeyValuePair<string, JToken> element in JObject.Parse(jsonTexto))

foreach (var property in fields.Properties())
{
if (element.Value is JObject)
ReadJsonObject(workItemId, workItemCustomFields, (JObject)element.Value);
else
GetWorkItemCustomField(workItemCustomFields, workItemId, element.Key, element.Value.ToString());
if (property.Name.StartsWith("Custom."))
{
string key = property.Name["Custom.".Length..];
string value = property.Value.ToString();
workItemCustomFields.Add(new WorkItemCustomField(workItemId, key, value));
}
}

return workItemCustomFields;
}
catch
{
return Enumerable.Empty<WorkItemCustomField>();
return [];
}
}

private static void ReadJsonObject(string workItemId, List<WorkItemCustomField> workItemCustomFields, JObject objeto)
{
foreach (KeyValuePair<string, JToken> item in objeto)
if (item.Value is JObject)
ReadJsonObject(workItemId, workItemCustomFields, (JObject)item.Value);
else
GetWorkItemCustomField(workItemCustomFields, workItemId, item.Key, item.Value.ToString());
}

private static void GetWorkItemCustomField(List<WorkItemCustomField> workItemCustomFields, string workItemId, string key, string value)
{
if (key is not null && !key.ToLower().Contains("custom")) return;
workItemCustomFields.Add(new WorkItemCustomField(workItemId, key, value));
}
}
}
Loading