public SearchResults Search(SearchResultsRequest searchResultsRequest) { HttpWebRequest request = CatalogRequestBuilder.ConstructSearchRequest(apiKey, searchResultsRequest); SearchResults searchResults = ProcessBodylessRequest(request).ToObject <SearchResults>(); return(searchResults); }
public void TestSearch() { SearchResultsRequest searchResultsRequest = new SearchResultsRequest(); searchResultsRequest.Query = "halo"; searchResultsRequest.IncludeAttributes = true; searchResultsRequest.Offset = 10; searchResultsRequest.Limit = 10; searchResultsRequest.DataOutputs = new EnumTypes.DataOutputType[] { EnumTypes.DataOutputType.PRODUCTS, EnumTypes.DataOutputType.CATEGORIES, EnumTypes.DataOutputType.REFINEMENTS }; searchResultsRequest.Offers = new EnumTypes.OfferType[] { EnumTypes.OfferType.ALL }; SearchResults searchResults = client.Search(searchResultsRequest); Assert.IsTrue(searchResults.TotalResultSize > 0); Assert.IsNotNull(searchResults.Categories); Assert.IsTrue(searchResults.Categories.Count > 0); Assert.IsNotNull(searchResults.Products); Assert.IsTrue(searchResults.Products.Count > 0); Assert.IsNotNull(searchResults.RefinementGroups); Assert.IsTrue(searchResults.RefinementGroups.Count > 0); Assert.IsTrue(searchResults.Products[0].ParentCategoryPaths.Count > 0); Assert.IsTrue(searchResults.Products[0].ParentCategoryPaths[0].ParentCategories.Count > 0); Assert.IsFalse(string.IsNullOrEmpty(searchResults.Products[0].ParentCategoryPaths[0].ParentCategories[0].Id)); Assert.IsFalse(string.IsNullOrEmpty(searchResults.Products[0].ParentCategoryPaths[0].ParentCategories[0].Name)); }
public static HttpWebRequest ConstructSearchRequest(string apiKey, SearchResultsRequest searchResultsRequest) { NameValueCollection queryParams = new NameValueCollection(); queryParams.Add("apikey", apiKey); if (searchResultsRequest.Query != null) { queryParams.Add("q", searchResultsRequest.Query); } if (searchResultsRequest.ProductIds != null) { queryParams.Add("pids", searchResultsRequest.ProductIds); } if (searchResultsRequest.CategoryId != null || searchResultsRequest.RefinementIds != null) { string ids = FormatterUtils.CombineCategoryAndRefinementIds(searchResultsRequest.CategoryId, searchResultsRequest.RefinementIds); queryParams.Add("ids", ids); } if (searchResultsRequest.ListId != null) { queryParams.Add("listid", searchResultsRequest.ListId); } if (searchResultsRequest.Field != null) { queryParams.Add("searchfield", EnumUtils.StringValueOf(searchResultsRequest.Field)); } if (searchResultsRequest.IncludeAttributes != null) { queryParams.Add("includeattributes", searchResultsRequest.IncludeAttributes.ToString().ToLower()); } if (searchResultsRequest.DataOutputs != null) { queryParams.Add("dataoutput", FormatterUtils.FormatDataOutput(searchResultsRequest.DataOutputs)); } if (searchResultsRequest.Offers != null) { queryParams.Add("offers", FormatterUtils.FormatOffer(searchResultsRequest.Offers)); } if (searchResultsRequest.Sort != null) { queryParams.Add("sort", EnumUtils.StringValueOf(searchResultsRequest.Sort)); } if (searchResultsRequest.Offset != null) { queryParams.Add("offset", searchResultsRequest.Offset.ToString().ToLower()); } if (searchResultsRequest.Limit != null) { queryParams.Add("limit", searchResultsRequest.Limit.ToString().ToLower()); } string queryString = HttpUtils.ToQueryString(queryParams); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Constants.URL_PREFIX + "/catalog/v4/search/" + queryString); request.Method = "GET"; request.Accept = "application/json"; return(request); }
/// <summary> /// Searches for products. /// </summary> /// <param name="searchResultsRequest">The search results request.</param> /// <returns>The search results response.</returns> public SearchResultsResponse Search(SearchResultsRequest searchResultsRequest) { SearchResultsResponse searchResultsResponse = null; // Prepare request NameValueCollection queryParams = new NameValueCollection(); if (searchResultsRequest.Term != null) { queryParams.Add("term", searchResultsRequest.Term); } if (searchResultsRequest.Offset != null) { queryParams.Add("offset", searchResultsRequest.Offset.ToString()); } if (searchResultsRequest.NrProducts != null) { queryParams.Add("nrProducts", searchResultsRequest.NrProducts.ToString()); } if (searchResultsRequest.SortingMethod != null) { queryParams.Add("sortingMethod", EnumUtils.stringValueOf(searchResultsRequest.SortingMethod)); } if (searchResultsRequest.SortingAscending != null) { queryParams.Add("sortingAscending", searchResultsRequest.SortingAscending.ToString()); } if (searchResultsRequest.IncludeProducts != null) { queryParams.Add("includeProducts", searchResultsRequest.IncludeProducts.ToString()); } if (searchResultsRequest.IncludeCategories != null) { queryParams.Add("includeCategories", searchResultsRequest.IncludeCategories.ToString()); } if (searchResultsRequest.IncludeRefinements != null) { queryParams.Add("includeRefinements", searchResultsRequest.IncludeRefinements.ToString()); } if (searchResultsRequest.IncludeAttributes != null) { queryParams.Add("includeAttributes", searchResultsRequest.IncludeAttributes.ToString()); } string queryString = ToQueryString(queryParams); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL_PREFIX + "/catalog/v3/searchresults/" + queryString); request.Method = "GET"; // Handle request AuthUtils.HandleRequest(request, accessKeyId, secretAccessKey, null, queryParams); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Load XML document if (HttpStatusCode.OK == response.StatusCode) { XmlSerializer ser = new XmlSerializer(typeof(SearchResultsResponse)); object obj = ser.Deserialize(response.GetResponseStream()); searchResultsResponse = (SearchResultsResponse)obj; response.Close(); } return searchResultsResponse; }
/// <summary> /// Searches for products. /// </summary> /// <param name="searchResultsRequest">The search results request.</param> /// <returns>The search results response.</returns> public SearchResultsResponse Search(SearchResultsRequest searchResultsRequest) { SearchResultsResponse searchResultsResponse = null; // Prepare request NameValueCollection queryParams = new NameValueCollection(); if (searchResultsRequest.Term != null) { queryParams.Add("term", searchResultsRequest.Term); } if (searchResultsRequest.Offset != null) { queryParams.Add("offset", searchResultsRequest.Offset.ToString()); } if (searchResultsRequest.NrProducts != null) { queryParams.Add("nrProducts", searchResultsRequest.NrProducts.ToString()); } if (searchResultsRequest.SortingMethod != null) { queryParams.Add("sortingMethod", EnumUtils.stringValueOf(searchResultsRequest.SortingMethod)); } if (searchResultsRequest.SortingAscending != null) { queryParams.Add("sortingAscending", searchResultsRequest.SortingAscending.ToString()); } if (searchResultsRequest.IncludeProducts != null) { queryParams.Add("includeProducts", searchResultsRequest.IncludeProducts.ToString()); } if (searchResultsRequest.IncludeCategories != null) { queryParams.Add("includeCategories", searchResultsRequest.IncludeCategories.ToString()); } if (searchResultsRequest.IncludeRefinements != null) { queryParams.Add("includeRefinements", searchResultsRequest.IncludeRefinements.ToString()); } if (searchResultsRequest.IncludeAttributes != null) { queryParams.Add("includeAttributes", searchResultsRequest.IncludeAttributes.ToString()); } string queryString = ToQueryString(queryParams); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL_PREFIX + "/catalog/v3/searchresults/" + queryString); request.Method = "GET"; // Handle request AuthUtils.HandleRequest(request, accessKeyId, secretAccessKey, null, queryParams); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Load XML document if (HttpStatusCode.OK == response.StatusCode) { XmlSerializer ser = new XmlSerializer(typeof(SearchResultsResponse)); object obj = ser.Deserialize(response.GetResponseStream()); searchResultsResponse = (SearchResultsResponse)obj; response.Close(); } return(searchResultsResponse); }