public SearchResultsList Search( SearchWidgetConfiguration configuration, [Documentation(Name = "Query", Type = typeof(string)), Documentation(Name = "PageIndex", Type = typeof(int)), Documentation(Name = "PageSize", Type = typeof(int))] IDictionary options) { var provider = Provider(configuration.ProviderId); var credentials = provider.Authentication; Dictionary <string, string> parameters; string openSearchUrl; if (options != null && options["PageIndex"] == null) { var allresults = new SearchResultsList { Items = new List <SearchResult>() }; int index = 0; const int maxIndex = 10; int pageSize = 100; if (options["PageSize"] != null) { int.TryParse(options["PageSize"].ToString(), out pageSize); } options["PageSize"] = pageSize; SearchResultsList current; do { options["PageIndex"] = index; parameters = SearchParametersAdapter(options); openSearchUrl = Specification.ParseUrl(provider.OpenSearchUrl, parameters); try { current = ExecuteSearch(openSearchUrl, credentials, configuration); allresults.Items.AddRange(current.GetItems()); } catch (WebException) { // format of xml file is invalid return(allresults); } index++; }while (current.GetItems().Count >= pageSize && index < maxIndex); return(allresults); } parameters = SearchParametersAdapter(options); openSearchUrl = Specification.ParseUrl(provider.OpenSearchUrl, parameters); try { SearchResultsList results = ExecuteSearch(openSearchUrl, credentials, configuration); //this.CurrentResults = results; return(results); } catch (WebException) { // format of xml file is invalid return(null); } }
public string Url( SearchProvider provider, SearchWidgetConfiguration configuration, [Documentation(Name = "Query", Type = typeof(string)), Documentation(Name = "PageIndex", Type = typeof(string)), Documentation(Name = "PageSize", Type = typeof(string))] IDictionary options) { var specification = new OpenSearchSpecification(new OpenSearchV1_1()); var parameters = SearchParametersAdapter(options); return(!String.IsNullOrEmpty(provider.MoreResultsUrl) && configuration.ShowMoreResultsLink ? specification.ParseUrl(provider.MoreResultsUrl, parameters) : null); }
private SearchResultsList ExecuteSearch(string url, Authentication credentials, SearchWidgetConfiguration configuration) { var xmlResponse = GetResponse(url, credentials); return(new SearchResultsList(xmlResponse)); }