Exemple #1
0
        static string GetUrl(SearchAndNotification searchPhrase, int page)
        {
            var modelAndTrim = searchPhrase.Model;

            if (!string.IsNullOrWhiteSpace(searchPhrase.Trim) && !Constants.AnyTrim.Equals(searchPhrase.Trim, StringComparison.InvariantCultureIgnoreCase))
            {
                modelAndTrim += $" {searchPhrase.Trim}";
            }

            var queryParams = new Dictionary <string, string>()
            {
                { "IncludeEngrosCVR", "true" },
                { "PriceFrom", "0" },
                { "includeLeasing", "false" },
                { "free", modelAndTrim },
                { "page", page.ToString() }
            };

            if (!string.IsNullOrWhiteSpace(searchPhrase.EarliestYear))
            {
                queryParams.Add("YearFrom", searchPhrase.EarliestYear);
            }

            if (!string.IsNullOrWhiteSpace(searchPhrase.MaxKmDriven))
            {
                queryParams.Add("MileageTo", searchPhrase.MaxKmDriven);
            }

            return(QueryHelpers.AddQueryString(BaseSearchUrl, queryParams));
        }
Exemple #2
0
        public static async Task <List <SearchResult> > SayHello([ActivityTrigger] SearchAndNotification searchPhrase, ILogger log)
        {
            try
            {
                using (var client = new HttpClient(new HttpClientHandler()
                {
                    AllowAutoRedirect = false
                }))
                {
                    var res = new List <SearchResult>();

                    for (int i = 1; i < 10; i++)
                    {
                        var response = await client.GetAsync(GetUrl(searchPhrase, i));

                        if (!response.IsSuccessStatusCode)
                        {
                            break;
                        }

                        var pageContents = await response.Content.ReadAsStringAsync();

                        HtmlDocument pageDocument = new HtmlDocument();
                        pageDocument.LoadHtml(pageContents);

                        res.AddRange(ParseHtml(pageDocument, searchPhrase.Model, log).Where(sr => sr.Model.Equals(searchPhrase.Model, StringComparison.InvariantCultureIgnoreCase)));
                    }

                    log.LogInformation($"Search: Found {res.Count} matches for {searchPhrase.Model}");

                    return(res);
                }
            }
            catch (Exception e)
            {
                log.LogError(e, $"Exception caught in {SearchFunctionName}");
                throw e;
            }
        }