public int ProductIdRequest(string cardName, string setName) { // Rate limit to be a good samaritan Thread.Sleep(200); // TODO: find a better way to do this without shutting down the thread setName = SanitizeSetName(setName); // when searching for products in the TCG Player API, it only accepts the name of the front face of double faced cards if (cardName.Contains("//")) { cardName = cardName.Split(new[] { "//" }, StringSplitOptions.RemoveEmptyEntries)[0].Trim(); } var searchCriteria = new CategoryProductsSearchBody { Sort = "name", Limit = 5, Offset = 0, Filters = new List <Filter> { new Filter { Name = Filter.FilterName.ProductName.ToString(), Values = new List <string> { cardName } }, new Filter { Name = Filter.FilterName.SetName.ToString(), Values = new List <string> { setName } } } }; var body = JsonConvert.SerializeObject(searchCriteria); var jsonResult = Post(CategoryProductSearchUri, body, RequestBodyType.Json, ReadAccessToken()); return(JsonConvert.DeserializeObject <CategoryProductsResult>(jsonResult).Results.OrderBy(i => i).FirstOrDefault()); }
public int ProductIdRequest(string cardName, string setName) { setName = SanitizeSetName(setName); using (var db = new FortyLifeDbContext()) { if (db.CardProductIds.Any(i => i.CardName == cardName && i.SetName == setName)) { return(db.CardProductIds.First(i => i.CardName == cardName && i.SetName == setName).ProductId); } // Rate limit to be a good samaritan Thread.Sleep(200); // TODO: find a better way to do this without shutting down the thread // when searching for products in the TCG Player API, it only accepts the name of the front face of double faced cards if (cardName.Contains("//")) { cardName = cardName.Split(new[] { "//" }, StringSplitOptions.RemoveEmptyEntries)[0].Trim(); } var searchCriteria = new CategoryProductsSearchBody { Sort = "name", Limit = 5, Offset = 0, Filters = new List <Filter> { new Filter { Name = Filter.FilterName.ProductName.ToString(), Values = new List <string> { cardName } } } }; //if (!string.IsNullOrEmpty(setName)) //{ // searchCriteria.Filters.Add(new Filter // { // Name = Filter.FilterName.SetName.ToString(), // Values = new List<string> {setName} // }); //} var body = JsonConvert.SerializeObject(searchCriteria); var jsonResult = Post(categoryProductSearchUri, body, RequestBodyType.Json, ReadAccessToken()); if (!string.IsNullOrEmpty(jsonResult)) { var productIdResult = JsonConvert.DeserializeObject <CategoryProductsResult>(jsonResult).Results .OrderBy(i => i).FirstOrDefault(); if (productIdResult > 0) { var newProductId = new CardProductId { CardName = cardName, SetName = setName, ProductId = productIdResult }; db.CardProductIds.AddOrUpdate(newProductId); db.SaveChanges(); return(productIdResult); } } return(0); } }