diff --git a/SnipeSharp/Endpoints/Models/StatusLabel.cs b/SnipeSharp/Endpoints/Models/StatusLabel.cs index d6c9aac..3605143 100644 --- a/SnipeSharp/Endpoints/Models/StatusLabel.cs +++ b/SnipeSharp/Endpoints/Models/StatusLabel.cs @@ -21,7 +21,7 @@ public string Type set { // TODO: Move this logic somewhere else - string[] validTypes = { "deployable", "pending", "archived" }; + string[] validTypes = {"undeployable", "deployable", "pending", "archived" }; if (validTypes.Contains(value.ToLower())) { _type = value; diff --git a/SnipeSharp/Endpoints/QueryParameterBuilder.cs b/SnipeSharp/Endpoints/QueryParameterBuilder.cs index 1eb71ab..a74770e 100644 --- a/SnipeSharp/Endpoints/QueryParameterBuilder.cs +++ b/SnipeSharp/Endpoints/QueryParameterBuilder.cs @@ -12,12 +12,13 @@ public class QueryParameterBuilder : IQueryParameterBuilder public Dictionary GetParameters(object item) { var values = new Dictionary(); + if (item == null) { return values; } - + foreach (var property in item.GetType().GetProperties()) { var nameAttribute = property.GetCustomAttribute(); @@ -26,10 +27,11 @@ public Dictionary GetParameters(object item) { continue; } - + var propValue = property.GetValue(item)?.ToString(); var requestAttribute = nameAttribute as RequestHeaderAttribute; + // Abort in case of missing required headers. if (string.IsNullOrEmpty(propValue) && requestAttribute?.IsRequired == true) { @@ -41,12 +43,22 @@ public Dictionary GetParameters(object item) { continue; } - + string headerName = nameAttribute.Name.Replace("\"", ""); values.Add(headerName, propValue); } + + // Add foreach loop to run with .Replace("\"", ""); + if (item.GetType() == typeof(SnipeSharp.Endpoints.Models.Asset)) + { + if (item.GetType().GetProperty("CustomFields") != null) { + Dictionary customFields = item.GetType().GetProperty("CustomFields").GetValue(item) as Dictionary; + values = values.Concat(customFields).ToDictionary(e => e.Key, e => e.Value); + } + } + return values; } }