36 lines
1.6 KiB
C#
36 lines
1.6 KiB
C#
using System.Text.Json.Serialization;
|
|
|
|
namespace BlueLaminate.Core.SkinLand;
|
|
|
|
/// <summary>
|
|
/// The subset of a skin.land <c>obtained-skins</c> offer we persist, parsed from the
|
|
/// JSON the Python worker scrapes (the paginated <c>data[]</c> array). Decimals are
|
|
/// parsed directly (not via double) so the full-precision float round-trips exactly into
|
|
/// <c>numeric(20,18)</c>. skin.land exposes no paint seed / def index, so there's nothing
|
|
/// to fingerprint a <c>SkinInstance</c> with — the shape is intentionally thin.
|
|
/// </summary>
|
|
public sealed class SkinLandOffer
|
|
{
|
|
[JsonPropertyName("id")] public long Id { get; set; }
|
|
[JsonPropertyName("item_float")] public decimal? ItemFloat { get; set; }
|
|
[JsonPropertyName("final_withdrawal_price")] public decimal? FinalWithdrawalPrice { get; set; }
|
|
[JsonPropertyName("name_tag")] public string? NameTag { get; set; }
|
|
[JsonPropertyName("item_link")] public string? ItemLink { get; set; }
|
|
[JsonPropertyName("stickers")] public List<SkinLandSticker?>? Stickers { get; set; }
|
|
[JsonPropertyName("skin")] public SkinLandSkin? Skin { get; set; }
|
|
}
|
|
|
|
public sealed class SkinLandSkin
|
|
{
|
|
[JsonPropertyName("id")] public long? Id { get; set; }
|
|
[JsonPropertyName("name")] public string? Name { get; set; }
|
|
[JsonPropertyName("url")] public string? Url { get; set; } // the market slug
|
|
[JsonPropertyName("is_stattrak")] public bool IsStatTrak { get; set; }
|
|
[JsonPropertyName("is_souvenir")] public bool IsSouvenir { get; set; }
|
|
}
|
|
|
|
public sealed class SkinLandSticker
|
|
{
|
|
[JsonPropertyName("name")] public string? Name { get; set; }
|
|
}
|