private static void ItemSearch() { // Create the request object ItemSearchRequest request = new ItemSearchRequest(); // Fill request object with request parameters request.ResponseGroup = new string[] { "Large", "ItemAttributes", "AlternateVersions" }; // Set SearchIndex to All and use the scanned EAN // as the keyword, this should generate a single response request.SearchIndex = "Books"; request.Keywords = "Century rain"; // asin = 0441013074 request.Author = "Alastair Reynolds"; // Make the item search ItemSearch search = new ItemSearch(); // It is ABSOLUTELY CRITICAL that you change // the AWSAccessKeyID to YOUR uniqe value // Signup for an account (and AccessKeyID) at http://aws.amazon.com/ search.AWSAccessKeyId = access_key_id; search.AssociateTag = associate_tag; // Set the request on the search wrapper - multiple requests // can be submitted on one search search.Request = new ItemSearchRequest[] { request }; // Make the port AWSECommerceServicePortTypeClient port = new AWSECommerceServicePortTypeClient("AWSECommerceServicePort"); port.ChannelFactory.Endpoint.EndpointBehaviors.Add(new AmazonSigningEndpointBehavior(access_key_id, secret_access_key)); //Send the request, store the response and display some of the results ItemSearchResponse response = port.ItemSearch(search); foreach (var items in response.Items) { foreach (var item in items.Item) { Console.WriteLine("{0}\t{1}\t{2}", item.ItemAttributes.Title, item.ASIN, item.ItemAttributes.Author[0]); if (item.AlternateVersions != null) { Console.WriteLine(" - Alternate versions"); foreach (var version in item.AlternateVersions) { Console.WriteLine(" -- \t{0}\t{1}\t{2}", version.Title, version.Binding, version.ASIN); } } } } }
public void TransformCriteriaTest() { ItemSearchCriteria criteria = new ItemSearchCriteria { SearchIndexLookupId = (int)SearchIndexLookupId.SportingGoods, ResponseTypeLookupId = new List<int> { (int)ResponseTypeLookupId.Large }, Keywords = new List<string> { "Pearl" }, ItemConditionLookupId = (int)ItemConditionLookupId.All, RetrievedItemPage = 1 }; ItemSearchRequest transformedRequest = ItemSearchCriteriaTransform.TransformCriteria(criteria); ItemSearchRequest request = new ItemSearchRequest { SearchIndex = "SportingGoods", Keywords = "Pearl", ItemPage = "1", Condition = Condition.All, ResponseGroup = new string[] { "Large" } }; Assert.AreEqual(request.SearchIndex, transformedRequest.SearchIndex, "The search index did not match."); Assert.AreEqual(request.Condition, transformedRequest.Condition, "The condition field did not match."); Assert.AreEqual(request.ResponseGroup[0], transformedRequest.ResponseGroup[0], "The ResponseGroup field did not match."); }
public IList <RecipeItem> SearchForRecipeItems(ItemSearchRequest query) { // No idea when recipes were added, the user probably wants owned items only. if (query.RecentOnly) { return(new List <RecipeItem>()); } using (ISession session = SessionCreator.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { ICriteria criterias = session.CreateCriteria <RecipeItem>(); if (!string.IsNullOrEmpty(query.Wildcard)) { criterias.Add(Subqueries.PropertyIn("BaseRecord", DetachedCriteria.For <DatabaseItem>() .Add(Restrictions.InsensitiveLike("Name", string.Format("%{0}%", query.Wildcard.Replace(' ', '%')))) .SetProjection(Projections.Property("Record")))); } AddItemSearchCriterias(criterias, query); criterias.Add(Restrictions.Eq("IsHardcore", query.IsHardcore)); IList <RecipeItem> items = criterias.List <RecipeItem>(); return(items); } } }
private static ItemSearchResponse DoAmazonItemSearch(string keywords, int page) //AWSECommerceServicePortTypeClient ecs, ItemSearchRequest request) { ItemSearchResponse response = null; // Create an ItemSearch wrapper ItemSearch search = new ItemSearch(); search.AssociateTag = _ASSOCIATE_TAG; search.AWSAccessKeyId = _ACCESS_KEY_ID; AWSECommerceServicePortTypeClient ecs = GetClient(); ItemSearchRequest request = GetSearchRequest(); request.Keywords = keywords; request.ItemPage = Convert.ToString(page); // Set the request on the search wrapper search.Request = new ItemSearchRequest[] { request }; try { //Send the request and store the response response = ecs.ItemSearch(search); } catch (NullReferenceException e) { Debug.WriteLine(e.ToString()); } return(response); }
private void AddAugmentItems(List <PlayerHeldItem> items, ItemSearchRequest query) { var augments = _augmentationItemRepo.Search(query); var remainingRecipes = augments.Where(recipe => items.All(item => item.BaseRecord != recipe.BaseRecord)); items.AddRange(remainingRecipes); }
public IEnumerable<Item> GetProducts(string sona, int leht) { AWSECommerceServicePortTypeClient ecs = new AWSECommerceServicePortTypeClient(); ItemSearchRequest paring = new ItemSearchRequest(); paring.ResponseGroup = new string[] { "ItemAttributes,OfferSummary" }; paring.SearchIndex = "All"; paring.Keywords = sona; paring.ItemPage = String.Format("{0}", leht); paring.MinimumPrice = "0"; ItemSearch otsi = new ItemSearch(); otsi.Request = new ItemSearchRequest[] { paring }; otsi.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; otsi.AssociateTag = ConfigurationManager.AppSettings["associateTag"]; ItemSearchResponse vastus = ecs.ItemSearch(otsi); if (vastus == null) { throw new Exception("Server Error - didn't get any reponse from server!"); } else if (vastus.OperationRequest.Errors != null) { throw new Exception(vastus.OperationRequest.Errors[0].Message); } else if (vastus.Items[0].Item == null) { throw new Exception("Didn't get any items!Try agen with different keyword."); } else { return vastus.Items[0].Item; } }
static void Main(string[] args) { // Instantiate Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest { SearchIndex = "Books", Title = "WCF", ResponseGroup = new[] { "Small" } }; ItemSearch itemSearch = new ItemSearch { Request = new[] { request }, AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"], AssociateTag = "ReplaceWithYourValue" }; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); // write out the results from the ItemSearch request foreach (var item in response.Items[0].Item) { Console.WriteLine(item.ItemAttributes.Title); } Console.WriteLine("done...enter any key to continue>"); Console.ReadLine(); }
public List <ItemModel> SearchItems(ItemSearchRequest itemSearchRequest) { //as contains method do not work with null values itemSearchRequest.CategoryIds = itemSearchRequest.CategoryIds ?? new List <int>(); itemSearchRequest.PriceRange = itemSearchRequest.PriceRange ?? new PriceRangeModel(); int fromRow = (itemSearchRequest.PageNo - 1) * itemSearchRequest.PageSize; int toRow = itemSearchRequest.PageSize; var items = db.Items.Where( x => (itemSearchRequest.CategoryIds.Count == 0 || itemSearchRequest.CategoryIds.Contains(x.CategoryId))) .Select( x => new ItemModel { Id = x.Id, Name = x.Name, Price = x.Price, Description = x.Description, Discount = x.Discount, Photo = x.Photo, ItemCategoryName = x.ItemCategory.Name, PreviousPrice = x.PreviousPrice ?? 0 }).OrderBy(x => x.Name).Skip(fromRow).Take(toRow).ToList(); return(items); }
public static void AmazonWCF() { // create a WCF Amazon ECS client BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey)); // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Electronics"; request.Title = "Monitor"; request.ResponseGroup = new string[] { "Small" }; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = accessKeyId; //itemSearch.AssociateTag = tab // issue the ItemSearch request ItemSearchResponse response = client.ItemSearch(itemSearch); // write out the results foreach (var item in response.Items[0].Item) { Console.WriteLine(item.ItemAttributes.Title); } }
public IEnumerable <Item> GetProducts(string sona, int leht) { AWSECommerceServicePortTypeClient ecs = new AWSECommerceServicePortTypeClient(); ItemSearchRequest paring = new ItemSearchRequest(); paring.ResponseGroup = new string[] { "ItemAttributes,OfferSummary" }; paring.SearchIndex = "All"; paring.Keywords = sona; paring.ItemPage = String.Format("{0}", leht); paring.MinimumPrice = "0"; ItemSearch otsi = new ItemSearch(); otsi.Request = new ItemSearchRequest[] { paring }; otsi.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; otsi.AssociateTag = ConfigurationManager.AppSettings["associateTag"]; ItemSearchResponse vastus = ecs.ItemSearch(otsi); if (vastus == null) { throw new Exception("Server Error - didn't get any reponse from server!"); } else if (vastus.OperationRequest.Errors != null) { throw new Exception(vastus.OperationRequest.Errors[0].Message); } else if (vastus.Items[0].Item == null) { throw new Exception("Didn't get any items!Try agen with different keyword."); } else { return(vastus.Items[0].Item); } }
public void TestSearch() { AWSECommerceService service = new AWSECommerceService(); //service.Url = "http://soap.amazon.com/onca/soap?Service=AWSECommerceService"; service.Url = "http://localhost:8080/onca/soap?Service=AWSECommerceService"; ItemSearchRequest search = new ItemSearchRequest(); search.Keywords = "television lcd"; search.SearchIndex = "Electronics"; search.ResponseGroup = new string[] { "Large" }; //OperationRequest ItemSearch request = new ItemSearch(); request.Request = new ItemSearchRequest[] { search }; request.Validate = "false"; request.XMLEscaping = "Single"; request.SubscriptionId = DeveloperIds.AmazonID; ItemSearchResponse response = service.ItemSearch(request); Console.WriteLine(response.OperationRequest.ToString()); if (response.Items.Length > 0) { Items[] arrayItems = response.Items; foreach (Items items in arrayItems) { foreach (Item item in items.Item) { Console.WriteLine("Title (" + item.ItemAttributes.Title + ")"); Console.WriteLine("Item (" + item.ASIN + ")"); } } } }
public ItemSearchResponse ItemSearch(string SearchIndex, string[] Group, string Keywords) { BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; binding.MaxBufferSize = int.MaxValue; AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client amazonClient.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(ConfigurationManager.AppSettings["accessKeyId"], ConfigurationManager.AppSettings["secretKey"])); ItemSearchRequest search = new ItemSearchRequest(); search.SearchIndex = SearchIndex; search.ResponseGroup = Group; search.Keywords = Keywords; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { search }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; itemSearch.AssociateTag = ConfigurationManager.AppSettings["associateTag"]; ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); return(response); }
public override void Process(OutputStream <Item> output) { AWSECommerceService service = new AWSECommerceService(); //service.Url = "http://soap.amazon.com/onca/soap?Service=AWSECommerceService"; service.Url = "http://localhost:8080/onca/soap?Service=AWSECommerceService"; ItemSearchRequest search = new ItemSearchRequest(); search.Keywords = _keywords + " tv"; search.SearchIndex = "Electronics"; search.ResponseGroup = new string[] { "Large" }; ItemSearch request = new ItemSearch(); request.Request = new ItemSearchRequest[] { search }; request.Validate = "false"; request.XMLEscaping = "Single"; request.SubscriptionId = DeveloperIds.AmazonID; ItemSearchResponse response = service.ItemSearch(request); Console.WriteLine(response.OperationRequest.ToString()); if (response.Items.Length > 0) { Items[] arrayItems = response.Items; foreach (Items items in arrayItems) { foreach (Item item in items.Item) { output.Write(item); } } } }
static void Main(string[] args) { var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo; ci.NumberFormat.NumberDecimalSeparator = "."; List <string> products = new List <string>(); List <string> price = new List <string>(); // Instantiate Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); for (int i = 1; i <= 6; i++) { // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "All"; //request.Title = "WCF"; request.Keywords = "playstation -kindle"; request.ResponseGroup = new string[] { "ItemAttributes", "Images" }; request.ItemPage = i.ToString(); ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; itemSearch.AssociateTag = "testfo-20"; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); } }
public ItemSearchResponse ItemSearch(string SearchIndex, string[] Group, string Keywords) { BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; binding.MaxBufferSize = int.MaxValue; AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client amazonClient.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(ConfigurationManager.AppSettings["accessKeyId"], ConfigurationManager.AppSettings["secretKey"])); ItemSearchRequest search = new ItemSearchRequest(); search.SearchIndex = SearchIndex; search.ResponseGroup = Group; search.Keywords = Keywords; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { search }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; itemSearch.AssociateTag = ConfigurationManager.AppSettings["associateTag"]; ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); return response; }
private static void ItemSearchFunc() { var request = new ItemSearchRequest { Keywords = "tv", SearchIndex = "All", ItemPage = _itemPage.ToString(CultureInfo.InvariantCulture) }; var itemSearch = new ItemSearch { Request = new ItemSearchRequest[] {request}, AWSAccessKeyId = AwsAccessKeyId, AssociateTag = AssociateTag }; if (_itemSearchResponse == null) { try { _itemSearchResponse = AmazonClient.ItemSearch(itemSearch); Console.WriteLine("TotalResults: " + _itemSearchResponse.Items[0].TotalResults); Console.WriteLine("TotalPages: " + _itemSearchResponse.Items[0].TotalPages); } catch (ServerTooBusyException) { ItemSearchFunc(); } } if (_itemSearchResponse == null) return; ItemLookupFunc(_itemSearchResponse.Items[0].Item.ToList()); }
static void Main(string[] args) { // Instantiate Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest { SearchIndex = "Books", Title = "WCF", ResponseGroup = new[] {"Small"} }; ItemSearch itemSearch = new ItemSearch { Request = new[] {request}, AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"], AssociateTag = "ReplaceWithYourValue" }; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); // write out the results from the ItemSearch request foreach (var item in response.Items[0].Item) { Console.WriteLine(item.ItemAttributes.Title); } Console.WriteLine("done...enter any key to continue>"); Console.ReadLine(); }
static void Main(string[] args) { var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo; ci.NumberFormat.NumberDecimalSeparator = "."; List<string> products = new List<string>(); List<string> price = new List<string>(); // Instantiate Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); for (int i = 1; i <= 6; i++) { // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "All"; //request.Title = "WCF"; request.Keywords = "playstation -kindle"; request.ResponseGroup = new string[] {"ItemAttributes", "Images"}; request.ItemPage = i.ToString(); ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; itemSearch.AssociateTag = "testfo-20"; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); } }
public IList <AugmentationItem> Search(ItemSearchRequest query) { // User only wants recent items, so definitely not buyable. if (query.RecentOnly) { return(new List <AugmentationItem>()); } using (ISession session = SessionCreator.OpenSession()) { using (session.BeginTransaction()) { ICriteria criterias = session.CreateCriteria <AugmentationItem>(); if (!string.IsNullOrEmpty(query.Wildcard)) { criterias.Add(Subqueries.PropertyIn("BaseRecord", DetachedCriteria.For <DatabaseItem>() .Add(Restrictions.InsensitiveLike("Name", string.Format("%{0}%", query.Wildcard.Replace(' ', '%')))) .SetProjection(Projections.Property("Record")))); } DatabaseItemDaoImpl.AddItemSearchCriterias(criterias, query); IList <AugmentationItem> items = criterias.List <AugmentationItem>(); return(items); } } }
/// <summary> /// Create the ItemSearchRequest not to be confused with the ItemSearch itself. /// </summary> /// <param name="searchIndex"></param> /// <returns></returns> protected static ItemSearchRequest CreateItemSearchRequest(string searchIndex) { ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = searchIndex; request.ResponseGroup = new string[] { "ItemAttributes", "Images" }; return(request); }
private ItemSearch CreateItemSearch(ItemSearchRequest searchRequest) { ItemSearch search = new ItemSearch(); search.AssociateTag = AssociateTag; search.Request = new ItemSearchRequest[] { searchRequest }; return(search); }
private void AddBuddyItems(List <PlayerHeldItem> items, ItemSearchRequest query, out string message) { var buddyItems = new List <BuddyItem>(_buddyItemDao.FindBy(query)); var itemsWithBuddy = items.FindAll(item => buddyItems.Any(buddy => buddy.BaseRecord == item.BaseRecord)); foreach (var item in items.FindAll(item => buddyItems.Any(buddy => buddy.BaseRecord == item.BaseRecord))) { foreach (PlayerHeldItem buddyItem in buddyItems.FindAll(buddy => buddy.BaseRecord == item.BaseRecord)) { var buddyName = System.Web.HttpUtility.HtmlEncode(buddyItem.Stash); if (!item.Buddies.Exists(name => name == buddyName)) { item.Buddies.Add(buddyName); } } } Logger.Debug($"Merged {itemsWithBuddy.Count} buddy items into player items"); // TODO: This should use .Except(), find out why its not working with .Except() var remainingBuddyItems = buddyItems .FindAll(buddy => itemsWithBuddy.All(item => item.BaseRecord != buddy.BaseRecord)); //We add the Owner name from pure BuddyItems from Stash to BuddyNames foreach (PlayerHeldItem remainingBuddyItem in remainingBuddyItems) { var buddyName = System.Web.HttpUtility.HtmlEncode(remainingBuddyItem.Stash); remainingBuddyItem.Buddies.Add(buddyName); } //We see if of the remaining Items there are any items with more than one Buddy and merge them var multiBuddyItems = remainingBuddyItems .FindAll(item => remainingBuddyItems.FindAll(buddy => buddy.BaseRecord == item.BaseRecord).Count() > 1); foreach (PlayerHeldItem multiBuddyItem in multiBuddyItems) { foreach (PlayerHeldItem item in remainingBuddyItems.FindAll(item => multiBuddyItem.BaseRecord == item.BaseRecord)) { var buddyName = System.Web.HttpUtility.HtmlEncode(item.Stash); if (!multiBuddyItem.Buddies.Exists(name => name == buddyName)) { multiBuddyItem.Buddies.Add(buddyName); } } } var buddyPlayerHeldItems = new List <PlayerHeldItem>(remainingBuddyItems); if (buddyPlayerHeldItems.Count > 0) { MergeDuplicates(buddyPlayerHeldItems); items.AddRange(buddyPlayerHeldItems); message = GlobalSettings.Language.GetTag("iatag_additional_items_found", buddyPlayerHeldItems.Count); } else { message = string.Empty; } }
public void GetSearchResponseAsync(ItemSearchRequest searchRequest, ItemSearchCompletedEventHandler callback) { ItemSearch search = CreateItemSearch(searchRequest); AWSECommerceService api = GetService(); api.ItemSearchCompleted += callback; api.ItemSearchAsync(search); }
public ActionResult GetProduct(ItemSearchRequest itemSearchRequest) { var items = itemRepository.SearchItems(itemSearchRequest); var model = new ItemViewModel { Items = items }; return(PartialView("_GetProduct", model)); }
public ItemSearchResponse GetSearchResponse(ItemSearchRequest searchRequest) { ItemSearch search = CreateItemSearch(searchRequest); AWSECommerceService api = GetService(); ItemSearchResponse response = api.ItemSearch(search); return(response); }
public string Search(ItemSearchRequest query, bool duplicatesOnly, bool includeBuddyItems, bool orderByLevel) { // Signal that we are loading items Browser.ShowLoadingAnimation(true); var message = Search_(query, duplicatesOnly, includeBuddyItems, orderByLevel); return(message); }
private ItemSearchRequest getItemSearchRequest(String keyword, int pageNumber) { ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "All"; request.Keywords = keyword; request.ItemPage = pageNumber.ToString(); request.ResponseGroup = new string[] { "Medium" }; return(request); }
// perform the Amazon search with SOAP and return results as a DataTable public static DataTable GetAmazonDataWithSoap() { // Create Amazon objects AWSECommerceServicePortTypeClient amazonService = new AWSECommerceServicePortTypeClient(); ItemSearch itemSearch = new ItemSearch(); ItemSearchRequest itemSearchRequest = new ItemSearchRequest(); ItemSearchResponse itemSearchResponse; // Setup Amazon objects itemSearch.AWSAccessKeyId = BalloonShopConfiguration.SubscriptionId; itemSearchRequest.Keywords = BalloonShopConfiguration.SearchKeywords; itemSearchRequest.SearchIndex = BalloonShopConfiguration.SearchIndex; itemSearchRequest.ResponseGroup = BalloonShopConfiguration.ResponseGroups.Split(','); itemSearch.Request = new ItemSearchRequest[1] { itemSearchRequest }; // Will store search results DataTable responseTable = GetResponseTable(); // If any problems occur, we prefer to send back empty result set // instead of throwing exception try { itemSearchResponse = amazonService.ItemSearch(itemSearch); Item[] results = itemSearchResponse.Items[0].Item; // Browse the results foreach (Item item in results) { // product with incomplete information will be ignored try { //create a datarow, populate it and add it to the table DataRow dataRow = responseTable.NewRow(); dataRow["ASIN"] = item.ASIN; dataRow["ProductName"] = item.ItemAttributes.Title; dataRow["ProductImageUrl"] = item.SmallImage.URL; dataRow["ProductPrice"] = item.OfferSummary.LowestNewPrice. FormattedPrice; responseTable.Rows.Add(dataRow); } catch { // Ignore products with incomplete information } } } catch (Exception e) { // ignore the error } // return the results return(responseTable); }
private static DatabaseItemStatQuery CreateDatabaseStatQueryParams(ItemSearchRequest query) { var queryFragments = new List <string>(); var queryParamsList = new Dictionary <string, string[]>(); // Add the damage/resist filter foreach (var filter in query.Filters) { queryFragments.Add( $"exists (select id_databaseitem from databaseitemstat_v2 dbs where stat in ( :filter_{filter.GetHashCode()} ) and db.id_databaseitem = dbs.id_databaseitem)"); queryParamsList.Add($"filter_{filter.GetHashCode()}", filter); } if (query.IsRetaliation) { queryFragments.Add( "exists (select id_databaseitem from databaseitemstat_v2 dbs where stat like 'retaliation%' and db.id_databaseitem = dbs.id_databaseitem)"); } // TODO: Seems we only have LIST parameters here.. won't work for this, since we'd get OR not AND on classes. // No way to get a non-list param? foreach (var desiredClass in query.Classes) { queryFragments.Add( "exists (select id_databaseitem from databaseitemstat_v2 dbs where stat IN ('augmentSkill1Extras','augmentSkill2Extras','augmentSkill3Extras','augmentSkill4Extras','augmentMastery1','augmentMastery2','augmentMastery3','augmentMastery4') " + $" AND TextValue = '{desiredClass}'" // Not ideal + " AND db.id_databaseitem = dbs.id_databaseitem)"); } if (queryFragments.Count > 0) { List <string> sql = new List <string>(); foreach (var fragment in queryFragments) { sql.Add($@" SELECT Playeritemid FROM PlayerItemRecord WHERE record IN ( select baserecord from databaseitem_V2 db where db.baserecord in ( select baserecord from playeritem union select prefixrecord from playeritem union select suffixrecord from playeritem union select materiarecord from playeritem ) AND {fragment} )"); } return(new DatabaseItemStatQuery { SQL = sql, Parameters = queryParamsList, }); } return(null); }
private ItemSearch SearchRequest(ItemSearchRequest request) { var itemSearch = new ItemSearch { Request = new[] { request }, AWSAccessKeyId = AccessKey, AssociateTag = AssociateTag }; return(itemSearch); }
private static ItemSearchRequest GetActiveItemSearch() { var itemSearch = new ItemSearchRequest(); itemSearch.MaxRows = 30000; itemSearch.ReturnChildItems = false; itemSearch.AddCriterion("item_available", AdditionalColumnType.Database, "1"); itemSearch.AddCriterion("item_type_id", AdditionalColumnType.Database, "3"); itemSearch.AddCriterion("item_closed", AdditionalColumnType.Database, "0"); return(itemSearch); }
private string Search_(ItemSearchRequest query, bool duplicatesOnly, bool includeBuddyItems, bool orderByLevel) { OnSearch?.Invoke(this, null); string message; long personalCount = 0; // If we've changed the mod, we'll need to update any recipes. (data source changes) if (_previousCallback != query?.Mod) { _previousMod = query?.Mod; StashManagerOnStashUpdated(null, null); } Logger.Info("Searching for items.."); var items = new List <PlayerHeldItem>(); items.AddRange(_playerItemDao.SearchForItems(query)); // This specific filter was easiest to add after the actual search // Obs: the "duplicates only" search only works when merging duplicates if (duplicatesOnly) { items = items.Where(m => m.Count > 1).ToList(); } personalCount = items.Sum(i => i.Count); if (includeBuddyItems && !query.SocketedOnly) { AddBuddyItems(items, query, out message); } else { message = personalCount == 0 ? GlobalSettings.Language.GetTag("iatag_no_matching_items_found") : string.Empty; } if (Properties.Settings.Default.ShowRecipesAsItems && !query.SocketedOnly) { AddRecipeItems(items, query); } if (Properties.Settings.Default.ShowAugmentsAsItems && !query.SocketedOnly) { AddAugmentItems(items, query); } _itemPaginatorService.Update(items, orderByLevel); JsBind.ItemSourceExhausted = items.Count == 0; return(message); }
public ItemSearchResponse KeywordSearch(string keywords, SearchIndex searchIndex = SearchIndex.VideoGames, int pageNumber = 1) { ItemSearchRequest searchRequest = CreateItemSearchRequest(searchIndex); searchRequest.ItemPage = pageNumber.ToString(); searchRequest.Keywords = keywords; ItemSearchResponse response = GetSearchResponse(searchRequest); return(response); }
private void UpdateCollectionItems(ItemSearchRequest query) { Thread thread = new Thread(() => { ExceptionReporter.EnableLogUnhandledOnThread(); Browser.SetCollectionItems(_itemCollectionRepo.GetItemCollection(query)); }); thread.Start(); Browser.SetCollectionAggregateData(_itemCollectionRepo.GetItemAggregateStats()); }
public virtual List<ProductDTO> GetProducts(List<string> asinList) { var productsToReturn = new List<ProductDTO>(); var allItemSearchRequests = new ItemSearchRequest[asinList.Count]; for (int i = 0; i < asinList.Count; i++ ) { allItemSearchRequests[i] = new ItemSearchRequest { SearchIndex = "Books", Power = ("asin:" + asinList[i]), ResponseGroup = new[] {"Small"} }; } //ItemSearchRequest can only be made in 2's var myItemSearchRequests = new ItemSearchRequest[2]; bool isASINListOdd = (asinList.Count % 2 != 0); for (int i = 0; i < asinList.Count ; i++) { myItemSearchRequests[i%2] = allItemSearchRequests[i]; if ((i != 0 && ((i + 1)%2 == 0)) || (isASINListOdd && asinList.Count == (i + 1))) { var itemSearch = new ItemSearch { AWSAccessKeyId = awsAccessKeyId, AssociateTag = associateTag, Request = myItemSearchRequests }; var itemSearchResponse = AWSECommerceServiceInstance.AWSECommerceService.ItemSearch(itemSearch); if (itemSearchResponse.Items == null) { if (itemSearchResponse.OperationRequest.Errors != null) { MapErrors(itemSearchResponse.OperationRequest.Errors); } break; } productsToReturn.AddRange(MapProducts(itemSearchResponse.Items)); myItemSearchRequests = new ItemSearchRequest[2]; } } return productsToReturn; }
public async Task <ApiResponse <MultipleItemSearchResult <Item> > > Search(ItemSearchRequest itemSearchRequest, bool includeItemInStoreMetadata = false) { Validator.For(itemSearchRequest, "itemSearchRequest").IsNotNull().IsValid(); string path = string.Format("/catalog/items?includeItemInStoreMetadata={0}", includeItemInStoreMetadata); using (var response = await Client.PostAsJsonAsync(path, itemSearchRequest).ConfigureAwait(false)) { return(await response.Content.ReadAsAsync <ApiResponse <MultipleItemSearchResult <Item> > >().ConfigureAwait(false)); } }
// perform the Amazon search with SOAP and return results as a DataTable public static DataTable GetAmazonDataWithSoap() { // Create Amazon objects AWSECommerceService amazonService = new AWSECommerceService(); ItemSearch itemSearch = new ItemSearch(); ItemSearchRequest itemSearchRequest = new ItemSearchRequest(); ItemSearchResponse itemSearchResponse; // Setup Amazon objects itemSearch.SubscriptionId = BalloonShopConfiguration.SubscriptionId; itemSearchRequest.Keywords = BalloonShopConfiguration.SearchKeywords; itemSearchRequest.SearchIndex = BalloonShopConfiguration.SearchIndex; itemSearchRequest.ResponseGroup = BalloonShopConfiguration.ResponseGroups.Split(','); itemSearch.Request = new AmazonEcs.ItemSearchRequest[1] { itemSearchRequest }; // Will store search results DataTable responseTable = GetResponseTable(); // If any problems occur, we prefer to send back empty result set // instead of throwing exception try { itemSearchResponse = amazonService.ItemSearch(itemSearch); Item[] results = itemSearchResponse.Items[0].Item; // Browse the results foreach (AmazonEcs.Item item in results) { // product with incomplete information will be ignored try { //create a datarow, populate it and add it to the table DataRow dataRow = responseTable.NewRow(); dataRow["ASIN"] = item.ASIN; dataRow["ProductName"] = item.ItemAttributes.Title; dataRow["ProductImageUrl"] = item.SmallImage.URL; dataRow["ProductPrice"] = item.OfferSummary.LowestNewPrice. FormattedPrice; responseTable.Rows.Add(dataRow); } catch { // Ignore products with incomplete information } } } catch (Exception e) { // ignore the error } // return the results return responseTable; }
private static ItemSearchRequest GetSearchRequest() { // Create a request object ItemSearchRequest request = new ItemSearchRequest(); // Fill the request object with request parameters request.ResponseGroup = _RESPONSE_GROUPS; // Set SearchIndex and Keywords request.SearchIndex = "All"; return(request); }
public DataTable GetProducts(string productName) { DataTable products = new DataTable(); products.Columns.Add("Product", typeof(string)); products.Columns.Add("Price", typeof(string)); products.Columns.Add("Image", typeof(string)); products.Columns.Add("url", typeof(string)); // Instantiate Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); for (int i = 1; i <= 5; i++) { // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "All"; request.Keywords = productName + " -kindle"; request.ResponseGroup = new string[] { "ItemAttributes", "Images"}; request.ItemPage = i.ToString(); request.Condition = Condition.New; request.Availability = ItemSearchRequestAvailability.Available; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; itemSearch.AssociateTag = "testfo-20"; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); foreach (var item in response.Items[0].Item) { try { products.Rows.Add(item.ItemAttributes.Title, item.ItemAttributes.ListPrice.FormattedPrice.Replace("$", ""),item.SmallImage.URL, item.DetailPageURL); } catch (NullReferenceException ex) { Debug.WriteLine("Caught Exception: " + ex.Message); continue; } } } return products; }
public static List<System.Drawing.Image> SearchAlbumArt(string keywords) { try { keywords = CleanString(keywords); ItemSearchRequest itemRequest = new ItemSearchRequest(); itemRequest.Keywords = keywords; // http://docs.amazonwebservices.com/AWSECommerceService/2009-02-01/DG/index.html?ItemLookup.html itemRequest.SearchIndex = "Music"; // Other possibly valid choices:Classical, DigitalMusic, Mp3Downloads, Music, MusicTracks, itemRequest.ResponseGroup = new string[] { "Images" }; // images only ItemSearch request = new ItemSearch(); request.AWSAccessKeyId = Credentials.AmazonAccessKeyId; request.Request = new ItemSearchRequest[] { itemRequest }; BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient(binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(Credentials.AmazonAccessKeyId, Credentials.AmazonSecretKey)); ItemSearchResponse response = client.ItemSearch(request); // Determine if book was found bool itemFound = ((response.Items[0].Item != null) && (response.Items[0].Item.Length > 0)); if (itemFound) { List<System.Drawing.Image> images = new List<System.Drawing.Image>(); foreach (Item currItem in response.Items[0].Item) { try { if (currItem != null && currItem.LargeImage != null) images.Add(ConvertByteArrayToImage(GetBytesFromUrl(currItem.LargeImage.URL))); } catch { } } return images; } } catch (Exception) {} return null; }
private static ItemSearch getItemSearch(string searchTerms, int page) { ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = SearchIndex; request.MerchantId = "All"; request.Title = searchTerms; request.ResponseGroup = ResponseGroups; request.ItemPage = page.ToString(); ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = AccessKeyId; itemSearch.AssociateTag = AssociateTag; return itemSearch; }
public static void SearchForBook(string title) { title = title.Replace("1st", "First"); title = title.Replace("2nd", "Second"); title = title.Replace("3rd", "Third"); Console.WriteLine("===> " + title); ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Books"; request.Keywords = title; request.ResponseGroup = new string[] { "ItemAttributes" }; ItemSearchRequest[] requests = new ItemSearchRequest[] { request }; MessageItemSearch itemSearch = new MessageItemSearch(); itemSearch.AWSAccessKeyId = "10XXKVYRS9C4CC4BDEG2"; itemSearch.Request = requests; try { MessageItemSearchResponse response = aws.ItemSearch(itemSearch); Items info = response.Items[0]; Item[] items = info.Item; for (int i = 0; i < items.Length; i++) { Item item = items[i]; string bookTitle = item.ItemAttributes.Title; if (bookTitle.Length > 70) bookTitle = title.Substring(0, 70); Console.WriteLine("{0, -70}\t", bookTitle); // Console.WriteLine("{0, -70}\t {1}", bookTitle, item.CustomerReviews.AverageRating.ToString()); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } Console.WriteLine(); }
//returns response from Amazon search request public static ItemSearchResponse search(ItemSearchRequest request) { // create a WCF Amazon ECS client BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient(binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(Globals.ACCESS_KEY_ID, Globals.SECRET_KEY)); ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = Globals.ACCESS_KEY_ID; itemSearch.AssociateTag = ""; // issue the ItemSearch request return client.ItemSearch(itemSearch); }
private Items[] LookForArtistAndName(string iArtist, string iName) { ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Music"; request.ResponseGroup = new string[] { "Medium", "Tracks" }; request.Sort = "relevancerank"; request.Title = iName; request.Artist = iArtist; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; //itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; itemSearch.AWSAccessKeyId = _IWebServicesManager.AmazonaccessKeyId; itemSearch.AssociateTag = string.Empty; // send the ItemSearch request ItemSearchResponse response = _AmazonClient.ItemSearch(itemSearch); return response.Items; }
public AWSHelper(string ENDPOINT, string MY_AWS_ACCESS_KEY_ID, string MY_AWS_SECRET_KEY, string NAMESPACE) { // Constructor to populate responseItems // Accepts various standard AWS parameters and search string // Basic HTTP binding BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; // Client client = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress(ENDPOINT)); client.ChannelFactory.Endpoint.Behaviors.Add( new AmazonSigningEndpointBehavior(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY, NAMESPACE)); // ItemSearchREquest request = new ItemSearchRequest(); request.ResponseGroup = new string[] { "Medium" }; itemSearch = new ItemSearch(); itemSearch.AWSAccessKeyId = MY_AWS_ACCESS_KEY_ID; }
static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine("AmazonTest [keyword]"); return; } AWSECommerceService service = new AWSECommerceService(); ItemSearchRequest req = new ItemSearchRequest(); req.Keywords = args[0]; req.SearchIndex = "Books"; req.ResponseGroup = new string[] {"ItemAttributes"}; req.ItemPage = "1"; ItemSearch search = new ItemSearch(); search.AWSAccessKeyId = "xxx"; search.Request = new ItemSearchRequest[] { req }; ItemSearchResponse res = service.ItemSearch(search); if (res.Items[0].Request.Errors != null) { Console.WriteLine("error:{0}", res.Items[0].Request.Errors[0].Message); } if (res.Items[0].Item != null) { foreach (Item item in res.Items[0].Item) { Console.WriteLine("title:{0}", item.ItemAttributes.Title); } } }
protected static ProductContainer _getProducts(String search, int pageNum) { List<Product> products = new List<Product>(); int pageCount = 0; int totalResults = 0; //prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "All"; request.Keywords = search; request.ResponseGroup = new string[] { "ItemAttributes", "Small", "Images" }; request.ItemPage = pageNum.ToString(); ItemSearchResponse res = AmazonService.search(request); if (res.Items[0].Item != null) { foreach (var item in res.Items[0].Item) { if (item == null) continue; string url = item.DetailPageURL; if (url.EndsWith("null")) url = url.Remove(url.Length - 4); int price = -1; string formattedPrice = ""; if (item.ItemAttributes.ListPrice != null) { price = Convert.ToInt32(item.ItemAttributes.ListPrice.Amount); formattedPrice = item.ItemAttributes.ListPrice.FormattedPrice; } Product product = new Product { Title = item.ItemAttributes.Title, Link = url, Image = item.MediumImage, Price = price, FormattedPrice = formattedPrice }; products.Add(product); } } if (products.Count > 0) { totalResults = Convert.ToInt32(res.Items[0].TotalResults); if (totalResults > 0) { if (totalResults <= Globals.ITEMS_PER_PAGE) pageCount = 1; else { pageCount = totalResults / Globals.ITEMS_PER_PAGE; if (totalResults % Globals.ITEMS_PER_PAGE != 0) pageCount++; } } } return new ProductContainer { products = products, pageCount = pageCount, resultCount = totalResults }; }
// the program starts here static void Main(string[] args) { // create a WCF Amazon ECS client BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey)); ItemLookupRequest request2 = new ItemLookupRequest(); request2.ItemId = new String[] { "2817801997" }; request2.IdType = ItemLookupRequestIdType.ISBN; request2.ResponseGroup = new String[] { "Medium" }; request2.IdTypeSpecified = true; request2.SearchIndex = "Books"; ItemLookup itemLookup = new ItemLookup(); itemLookup.Request = new ItemLookupRequest[] { request2 }; itemLookup.AWSAccessKeyId = accessKeyId; itemLookup.AssociateTag = "213"; ItemLookupResponse response2 = client.ItemLookup(itemLookup); foreach (var item in response2.Items[0].Item) { // Create a web request to the URL for the picture System.Net.WebRequest webRequest = HttpWebRequest.Create(item.MediumImage.URL); // Execute the request synchronuously HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); // Create an image from the stream returned by the web request //pCover.Image = new System.Drawing.Bitmap(webResponse.GetResponseStream()); // Finally, close the request webResponse.Close(); Console.WriteLine(item.ItemAttributes.Title); } // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Books"; request.Title = "Node.js"; request.ResponseGroup = new string[] { "Small" }; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; //itemSearch.AssociateTag = "testsite09f-21"; itemSearch.AssociateTag = "213"; itemSearch.AWSAccessKeyId = accessKeyId; // issue the ItemSearch request ItemSearchResponse response = client.ItemSearch(itemSearch); // write out the results foreach (var item in response.Items[0].Item) { Console.WriteLine(item.ItemAttributes.Title); } Console.ReadLine(); }
public ItemSearchResponse SearchItem(ItemSearchRequest itemSearchRequest) { return SearchItem(itemSearchRequest, new string[] { "Small" }); }
public ItemSearchResponse SearchItem(ItemSearchRequest itemSearchRequest, string[] responseGroup) { itemSearchRequest.ResponseGroup = responseGroup; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { itemSearchRequest }; itemSearch.AWSAccessKeyId = AccessKeyId; itemSearch.AssociateTag = AssociateTag; using (AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient(_BasicHttpBinding, _EndPointAddress)) { client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(AccessKeyId, SecretKey)); return client.ItemSearch(itemSearch); } }
private ItemSearchRequest getItemSearchRequest(String keyword, int pageNumber) { ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "All"; request.Keywords = keyword; request.ItemPage = pageNumber.ToString(); request.ResponseGroup = new string[] { "Medium" }; return request; }
public async Task<SongData> getData(SongData newSong, string fullRequest) { try { // Instantiate Amazon ProductAdvertisingAPI client BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client amazonClient.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey)); // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "MP3Downloads"; request.RelationshipType = new string[] { "Tracks" }; request.ResponseGroup = new string[] { "ItemAttributes", "Images", "Offers", "RelatedItems" }; request.Keywords = fullRequest; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = accessKeyId; itemSearch.AssociateTag = "1330-3170-0573"; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); var item = response.Items[0].Item[0]; //<ProductTypeName>DOWNLOADABLE_MUSIC_TRACK</ProductTypeName> if (response.Items[0].Item[0].ItemAttributes.ProductTypeName == "DOWNLOADABLE_MUSIC_ALBUM") { item = response.Items[0].Item[1]; } // if no response to search if (item == null) { try { // Try new search and remove the album newSong.Album = "UNKNOWN"; // Re-iterate over the search method await getData(newSong, fullRequest); } catch { // Removing the album produced no results // Continue forward... } } // Get year from full Release Date var var formatYear = DateTime.Parse(item.ItemAttributes.ReleaseDate).Year; newSong.UserID = 1; newSong.LocationID = 1; newSong.Album = item.RelatedItems[0].RelatedItem[0].Item.ItemAttributes.Title; newSong.Artist = item.ItemAttributes.Creator[0].Value; newSong.Title = item.ItemAttributes.Title; newSong.Year = (int)formatYear; newSong.Genre = item.ItemAttributes.Genre; newSong.FilePath = ""; newSong.Duration = (int)item.ItemAttributes.RunningTime.Value; newSong.Price = item.Offers.Offer[0].OfferListing[0].Price.FormattedPrice; newSong.ASIN = item.ASIN; newSong.Artwork = item.LargeImage.URL; return newSong; } catch { return newSong; } }
private ItemSearchRequest RequestBuilder(SearchIndex index, string keywords, int page, IEnumerable<ResponseGroup> responseGroups, Merchants merchant, int? maximumPrice, int? minimumPrice, int? percentageOff) { var request = new ItemSearchRequest { SearchIndex = index.ToString(), Keywords = keywords, MaximumPrice = maximumPrice != null ? maximumPrice.ToString() : null, MinimumPrice = minimumPrice != null ? minimumPrice.ToString() : null, MerchantId = merchant.ToString(), MinPercentageOff = percentageOff != null ? percentageOff.ToString() : null, ItemPage = page.ToString(CultureInfo.InvariantCulture), ResponseGroup = new[] { String.Join(",", responseGroups.Select(i => i.ToString()).ToArray()), } }; return request; }
public ItemSearchResponse SearchItemByTitle(string searchIndex, string title, string[] responseGroup) { ItemSearchRequest searchRequest = new ItemSearchRequest(); searchRequest.SearchIndex = searchIndex; searchRequest.Title = title; return SearchItem(searchRequest, responseGroup); }
public bool SearchForMovie(string movieName, int maxResults) { _locale = AmazonLocale.FromString(Properties.Settings.Default.AmazonLocale); BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; client = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress(_locale.URL) ); client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior()); try { ItemSearchRequest req = new ItemSearchRequest(); req.SearchIndex = Properties.Settings.Default.AmazonSearchMode; req.Title = movieName; req.ItemPage = @"1"; req.ResponseGroup = new string[] { "Medium", "Subjects" }; ItemSearch iSearch = new ItemSearch(); iSearch.Request = new ItemSearchRequest[] { req }; iSearch.AWSAccessKeyId = Properties.Settings.Default.AWEAccessKeyId; ItemSearchResponse res = client.ItemSearch(iSearch); if (res.Items[0].Item.Length > 0) { Item[] amazonItems = res.Items[0].Item; int itemsToProcess = Math.Min(amazonItems.Length, maxResults); if (amazonItems != null) { // convert Amazon Items to generic collection of DVDs OMLSDKTitle[] searchResults = new OMLSDKTitle[itemsToProcess]; for (int i = 0; i < itemsToProcess; i++) { searchResults[i] = AmazonToOML.TitleFromAmazonItem(amazonItems[i]); } int totalPages = 0; int totalItems = 0; if (res.Items[0].TotalPages != null) totalPages = Convert.ToInt32(res.Items[0].TotalPages); if (res.Items[0].TotalResults != null) totalItems = Convert.ToInt32(res.Items[0].TotalResults); _searchResult = (new AmazonSearchResult(searchResults, totalPages, totalItems)); } else { _searchResult = (new AmazonSearchResult(null, 0, 0)); } return true; } } catch { _searchResult = (new AmazonSearchResult(null, 0, 0)); } return false; }
private static ItemSearchResponse AmazonRequestByPage(string Keyword, int page, string SearchIndex) { #region Set Amazon Search parameters ItemSearch search = new ItemSearch(); //replace these with your account info search.AssociateTag = "X"; string accessKeyId="X"; string secretKey="X"; ItemSearchRequest req = new ItemSearchRequest(); req.ResponseGroup = new string[] { "Medium" }; req.SearchIndex = SearchIndex; req.ItemPage = Convert.ToString(page); req.Keywords = Keyword; req.Availability = ItemSearchRequestAvailability.Available; search.Request = new ItemSearchRequest[] { req }; Amazon.AWSECommerceServicePortTypeClient amzwc = new Amazon.AWSECommerceServicePortTypeClient(); amzwc.ChannelFactory.Endpoint.EndpointBehaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey)); try { ItemSearchResponse resp = amzwc.ItemSearch(search); return resp; } catch (Exception ex) { ItemSearchResponse resp = null; return resp; } #endregion }
/// <summary> /// Performs the search. /// </summary> private void PerformSearch() { if (this.txtSearchCriteria.Text.Length == 0) { return; } try { // create a WCF Amazon ECS client var basicBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); basicBinding.MaxReceivedMessageSize = 2147483647; basicBinding.ReaderQuotas.MaxStringContentLength = int.MaxValue; var client = new AWSECommerceServicePortTypeClient( basicBinding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(AmazonID, AmazonKey)); var request = new ItemSearchRequest(); request.Availability = ItemSearchRequestAvailability.Available; request.Condition = Condition.All; request.ItemPage = this.pageNumber.ToString(); request.MerchantId = "Amazon"; request.ResponseGroup = new[] { "Medium", "Reviews", "ItemAttributes", "BrowseNodes" }; request.SearchIndex = "DVD"; request.Title = this.txtSearchCriteria.Text; var itemSearch = new ItemSearch(); itemSearch.Request = new[] { request }; itemSearch.AWSAccessKeyId = AmazonID; ItemSearchResponse response = client.ItemSearch(itemSearch); if (response.Items[0].Item != null) { this.lbResults.Items.Clear(); foreach (Items resultItem in response.Items) { foreach (Item displayItem in resultItem.Item) { ItemAttributes item = displayItem.ItemAttributes; // Work out which review (if any) we can use string myReview; if (displayItem.EditorialReviews == null) { if (displayItem.CustomerReviews == null) { myReview = string.Empty; } else { myReview = this.orNull(displayItem.CustomerReviews.Review[0].Content); } } else { myReview = this.orNull(displayItem.EditorialReviews[0].Content); } var _entry = new AmazonEntry( this.orNull(displayItem.ASIN), this.orNull(item.Title), item.Director == null ? string.Empty : this.orNull(item.Director[0]), this.orNull(item.TheatricalReleaseDate), myReview, this.orNull(displayItem.DetailPageURL), this.orNull(GetGenre(displayItem)), this.orNull(item.AudienceRating), displayItem.MediumImage == null ? string.Empty : this.orNull(displayItem.MediumImage.URL)); this.lbResults.Items.Add(_entry); } } this.lblPage.Text = "Page " + this.pageNumber.ToString(); this.safePageNumber = this.pageNumber; } else { this.pageNumber = this.safePageNumber; } this.AddLogEntry("Search Complete", LogType.Info); } catch (Exception ex) { this.pageNumber = this.safePageNumber; this.AddLogEntry(ex.Message, LogType.Fail); } }
private ItemSearch SearchRequest(ItemSearchRequest request) { var itemSearch = new ItemSearch { Request = new[] { request }, AWSAccessKeyId = AccessKey, AssociateTag = AssociateTag }; return itemSearch; }