Exemple #1
0
 private HeadHunterQueryParameters GetQueryParameters(HeadHunterSubscriptionParameters subscriptionParameters,
                                                      DateTime?dateFrom = null,
                                                      DateTime?dateTo   = null)
 {
     return(new()
     {
         SpecializationId = subscriptionParameters.SpecializationId,
         SearchText = subscriptionParameters.SearchText,
         Schedules = subscriptionParameters.Schedules,
         Areas = subscriptionParameters.Areas,
         PageNumber = 0,
         ItemsPerPage = 100,
         DateFrom = dateFrom == null? null: $"{dateFrom:yyyy-MM-dd}",
         DateTo = dateTo == null?null:$"{dateTo:yyyy-MM-dd}"
     });
 }
Exemple #2
0
        public async IAsyncEnumerable <HeadHunterSnippet> GetSnippets(
            HeadHunterSubscriptionParameters subscriptionParameters)
        {
            //var queryParameters = GetQueryParameters(subscriptionParameters, DateTime.Now.AddDays(-7), DateTime.Now);
            var queryParameters = GetQueryParameters(subscriptionParameters);
            var pagesCount      = 1;
            var currentPage     = 0;

            do
            {
                var snippets = await _headHunterApi.GetVacanciesSnippets(queryParameters);

                if (currentPage == 0)
                {
                    _logger.LogInformation("Total number vacancies {totalVacanciesCount}, pages {totalPagesCount}",
                                           snippets.Found, snippets.Pages);
                    pagesCount = snippets.Pages;
                }

                _logger.LogInformation("Processing page {CurrentPageNumber}", currentPage + 1);

                foreach (var data in snippets.Items)
                {
                    if (data == null)
                    {
                        continue;
                    }
                    var snippet = JObject.Parse(data.ToString() ?? string.Empty);
                    var vacancy = new HeadHunterSnippet
                    {
                        Id             = (string)snippet["id"],
                        Name           = (string)snippet["name"],
                        CreatedDate    = (DateTimeOffset)snippet["created_at"],
                        UpdateDate     = (DateTimeOffset)snippet["published_at"],
                        Responsibility = (string)snippet["snippet"]?["responsibility"]
                    };

                    yield return(vacancy);

                    await Task.Delay(_timeOut);
                }

                currentPage++;
                queryParameters.PageNumber++;
            } while (currentPage < pagesCount);
        }