public static double GetPrice(string name, int quality, int craftable) //make sure it's full name!, also, no unusuals. mebe later. { BackpackAPI instance = (BackpackAPI)MemoryCache.Default.Get("BackpackTF"); double value; string currency; if (craftable == 0) { if (name.Contains("Crate")) { int crate; string[] words = name.Split('#'); crate = int.Parse(words[1]); value = instance.response.items[words[0]].prices[quality].tradable.uncraftable[crate].value; currency = instance.response.items[words[0]].prices[quality].tradable.uncraftable[crate].currency; } else { value = instance.response.items[name].prices[quality].tradable.uncraftable[0].value; currency = instance.response.items[name].prices[quality].tradable.uncraftable[0].currency; } } else { if (name.Contains("Crate")) { int crate; string[] words = name.Split('#'); crate = int.Parse(words[1]); value = instance.response.items[words[0]].prices[quality].tradable.craftable[crate].value; currency = instance.response.items[words[0]].prices[quality].tradable.craftable[crate].currency; } else { value = instance.response.items[name].prices[quality].tradable.craftable[0].value; currency = instance.response.items[name].prices[quality].tradable.craftable[0].currency; } } double price = StringParsing.StringToDouble(value + " " + currency, true); return(price); }
private static void UpdatePrices(object state) { BackpackAPI instance = new BackpackAPI(); instance = instance.FetchBackpack(); ItemList itemlist = new ItemList(); itemlist.FetchItemList(ref itemlist); foreach (ItemInfo item in itemlist.items) { item.GetNames(); item.BPprice = instance.GetPrice(item, false); if (item.BPprice == 0) { continue; } item.FetchPrice(3); } itemlist = null; }
public BackpackAPI FetchBackpack() { var absoluteExpirationPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTime.Now.AddMinutes(40) }; var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }; HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("http://backpack.tf/api/IGetPrices/v4/?key=54eea024ba8d88e8468b4848&compress=1"); StreamReader Reader = new StreamReader(Request.GetResponse().GetResponseStream()); var Data = Reader.ReadToEnd(); BackpackAPI instance = JsonConvert.DeserializeObject <BackpackAPI>(Data, settings); //MemoryCache.Default.Set("BackpackTF", instance, absoluteExpirationPolicy); Console.WriteLine("done"); return(instance); }
static void Main(string[] args) { mailer.Initialize(); // ItemInfo key = new ItemInfo { name = "Mann Co. Supply Crate Key", craftable = 1, quality = 6, cosmetic = false, numeric = "0", crate = 0, australium = 0, fullname = "Mann Co. Supply Crate Key", completename = "Mann Co. Supply Crate Key" }; //ItemInfo bud = new ItemInfo { name = "Earbuds", craftable = 1, quality = 6, cosmetic = true, numeric = "0", crate = 0, australium = 0, fullname = "Earbuds", completename = "Earbuds" }; bool done = false; BackpackAPI backpack = new BackpackAPI(); backpack = backpack.FetchBackpack(); backpack.GetCurrency(); ItemInfo.GetCurrency(); Stopwatch watch = new Stopwatch(); watch.Start(); ItemList itemlist = new ItemList(); itemlist.FetchItemList(ref itemlist); foreach (ItemInfo item in itemlist.items) { item.GetNames(); item.BPprice = backpack.GetPrice(item, false); if (item.BPprice == 0) { continue; } item.FetchPrice(3); } watch.Stop(); mailer.SendMail("time", watch.ElapsedMilliseconds.ToString()); Console.WriteLine("Initialization Done"); Parallel.Invoke( () => { using (new Timer(RefreshListings, null, TimeSpan.FromMinutes(0), TimeSpan.FromMinutes(40))) { while (true) { if (done) { break; } } } }, () => { using (new Timer(UpdatePrices, null, TimeSpan.FromMinutes(45), TimeSpan.FromMinutes(40))) { while (true) { if (done) { break; } } } }, () => { using (new Timer(UpdateClassifieds, null, TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))) { while (true) { if (done) { break; } } } } ); }