52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using Props.Shop.Framework;
|
|
|
|
namespace Props.Shop.Adafruit.Api
|
|
{
|
|
public class ProductListingsParser
|
|
{
|
|
public IEnumerable<ProductListing> ProductListings { get; private set; }
|
|
public void BuildProductListings(Stream stream)
|
|
{
|
|
using (StreamReader streamReader = new StreamReader(stream))
|
|
{
|
|
DateTime startTime = DateTime.UtcNow;
|
|
dynamic data = JArray.Load(new JsonTextReader(streamReader));
|
|
List<ProductListing> parsed = new List<ProductListing>();
|
|
foreach (dynamic item in data)
|
|
{
|
|
if (item.products_discontinued == 0)
|
|
{
|
|
ProductListing res = new ProductListing();
|
|
res.TimeFetchedUtc = startTime;
|
|
res.Name = item.product_name;
|
|
res.LowerPrice = item.product_price;
|
|
res.UpperPrice = res.LowerPrice;
|
|
foreach (dynamic discount in item.discount_pricing)
|
|
{
|
|
if (discount.discounted_price < res.LowerPrice)
|
|
{
|
|
res.LowerPrice = discount.discounted_price;
|
|
}
|
|
if (discount.discounted_price > res.UpperPrice)
|
|
{
|
|
res.UpperPrice = discount.discounted_price;
|
|
}
|
|
}
|
|
res.URL = item.product_url;
|
|
res.InStock = item.product_stock > 0;
|
|
parsed.Add(res);
|
|
res.Identifier = res.URL;
|
|
}
|
|
}
|
|
ProductListings = parsed;
|
|
}
|
|
}
|
|
}
|
|
} |