Exemplo n.º 1
1
        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.");
		}
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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;
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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 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 + ")");
                }
            }
        }
    }
Exemplo n.º 13
0
        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);
                    }
                }
            }
        }
Exemplo n.º 15
0
        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;
        }
Exemplo n.º 17
0
 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());
 }
Exemplo n.º 18
0
        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();
        }
Exemplo n.º 19
0
        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);

            }
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 27
0
        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);
        }
Exemplo n.º 28
0
        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);
        }
Exemplo n.º 29
0
    // 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);
    }
Exemplo n.º 30
0
        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);
        }
Exemplo n.º 31
0
        private ItemSearch SearchRequest(ItemSearchRequest request)
        {
            var itemSearch = new ItemSearch
            {
                Request        = new[] { request },
                AWSAccessKeyId = AccessKey,
                AssociateTag   = AssociateTag
            };

            return(itemSearch);
        }
Exemplo n.º 32
0
        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);
        }
Exemplo n.º 33
0
        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);
        }
Exemplo n.º 35
0
        private void UpdateCollectionItems(ItemSearchRequest query)
        {
            Thread thread = new Thread(() => {
                ExceptionReporter.EnableLogUnhandledOnThread();
                Browser.SetCollectionItems(_itemCollectionRepo.GetItemCollection(query));
            });

            thread.Start();


            Browser.SetCollectionAggregateData(_itemCollectionRepo.GetItemAggregateStats());
        }
Exemplo n.º 36
0
        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;
        }
Exemplo n.º 37
0
        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));
            }
        }
Exemplo n.º 38
0
    // 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;
    }
Exemplo n.º 39
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 40
0
        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);
        }
Exemplo n.º 41
0
        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;
        }
Exemplo n.º 42
0
        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;
        }
Exemplo n.º 44
0
    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();
    }
Exemplo n.º 45
0
        //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;
        }
Exemplo n.º 47
0
        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;
        }
Exemplo n.º 48
0
        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);
                }
            }
            
        }
Exemplo n.º 49
0
        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();
        }
Exemplo n.º 51
0
 public ItemSearchResponse SearchItem(ItemSearchRequest itemSearchRequest)
 {
     return SearchItem(itemSearchRequest, new string[] { "Small" });
 }
Exemplo n.º 52
0
        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);
            }
        }
Exemplo n.º 53
0
 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;
 }
Exemplo n.º 54
0
        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;
            }
        }
Exemplo n.º 55
0
        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;
        }
Exemplo n.º 56
0
        public ItemSearchResponse SearchItemByTitle(string searchIndex, string title, string[] responseGroup)
        {
            ItemSearchRequest searchRequest = new ItemSearchRequest();
            searchRequest.SearchIndex = searchIndex;
            searchRequest.Title = title;

            return SearchItem(searchRequest, responseGroup);
        }
Exemplo n.º 57
0
        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;
        }
Exemplo n.º 58
0
        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
        }
Exemplo n.º 59
0
        /// <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);
            }
        }
Exemplo n.º 60
0
        private ItemSearch SearchRequest(ItemSearchRequest request)
        {
            var itemSearch = new ItemSearch
            {
                Request = new[] { request },
                AWSAccessKeyId = AccessKey,
                AssociateTag = AssociateTag
            };

            return itemSearch;
        }