Skip to content

Commit

Permalink
more meaningful external_lot_ids conversion
Browse files Browse the repository at this point in the history
closes #3
  • Loading branch information
stephanstapel committed May 26, 2024
1 parent 36819ab commit 2aff561
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 1 deletion.
2 changes: 1 addition & 1 deletion BrickOwlSharp.Client/Inventory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public class Inventory
[JsonPropertyName("ids")]
public List<Reference> Ids { get; set; } = new List<Reference>();

[JsonPropertyName("external_lot_ids")]
[JsonPropertyName("external_lot_ids"), JsonConverter(typeof(ExternalLotIdConverter))]
public List<Reference> ExternalLotIds { get; set; } = new List<Reference>();
}
}
69 changes: 69 additions & 0 deletions BrickOwlSharp.Client/Json/ExternalLotIdConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#region License
// Copyright (c) 2020 Jens Eisenbach
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
#endregion

using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
using BrickOwlSharp;

namespace BrickOwlSharp.Client.Json
{
internal class ExternalLotIdConverter : JsonConverter<List<Reference>>
{
public override List<Reference> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
List<Reference> references = new List<Reference>();

if (reader.TokenType == JsonTokenType.StartArray)
{
// the array is only used when the external_lot_ids property is empty
reader.Read();
}
else if (reader.TokenType == JsonTokenType.StartObject)
{
JsonNode node = JsonObject.Parse(ref reader);

if (node["other"] != null)
{
references.Add(new Reference()
{
Type = IdType.Other,
Id = node["other"].ToString()
});
}
}

return references;
} // !Read()


public override void Write(Utf8JsonWriter writer, List<Reference> value, JsonSerializerOptions options)
{
writer.WriteStringValue(""); // ???
} // !Write()
}
}

0 comments on commit 2aff561

Please sign in to comment.