diff --git a/src/AzureDevopsTracker.csproj b/src/AzureDevopsTracker.csproj index bb3702c..6e4a512 100644 --- a/src/AzureDevopsTracker.csproj +++ b/src/AzureDevopsTracker.csproj @@ -19,8 +19,8 @@ LICENSE.md.txt A NuGet that allows you to use a Azure DevOps Service Hook to track workitems changes in a simply and detailed way. 8.0.0.0 - 8.0.2 - 8.0.2 + 8.0.3 + 8.0.3 diff --git a/src/Helpers/ReadJsonHelper.cs b/src/Helpers/ReadJsonHelper.cs index 1c00613..df60be3 100644 --- a/src/Helpers/ReadJsonHelper.cs +++ b/src/Helpers/ReadJsonHelper.cs @@ -7,40 +7,35 @@ namespace AzureDevopsTracker.Helpers { public static class ReadJsonHelper { + public static IEnumerable 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(); + } var workItemCustomFields = new List(); - foreach (KeyValuePair 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(); + return []; } } - - private static void ReadJsonObject(string workItemId, List workItemCustomFields, JObject objeto) - { - foreach (KeyValuePair 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 workItemCustomFields, string workItemId, string key, string value) - { - if (key is not null && !key.ToLower().Contains("custom")) return; - workItemCustomFields.Add(new WorkItemCustomField(workItemId, key, value)); - } } }