コード例 #1
0
        private Vacancy GetOlderVersionSameVacancy(HeadHunterVacancy headHunterVacancy,
                                                   HeadHunterSnippet headHunterSnippet)
        {
            var vacancy = GetVacancy(headHunterVacancy, headHunterSnippet);

            vacancy.SourceUpdatedDate = vacancy.SourceUpdatedDate.AddDays(-1);
            return(vacancy);
        }
コード例 #2
0
        private Vacancy GetVacancy(HeadHunterVacancy headHunterVacancy,
                                   HeadHunterSnippet headHunterSnippet)
        {
            var vacancy = GetRandomVacancy();

            vacancy.SourceId          = headHunterVacancy.Id;
            vacancy.SourceUpdatedDate = headHunterSnippet.UpdateDate;
            vacancy.IsArchived        = false;
            return(vacancy);
        }
コード例 #3
0
        private async Task <Vacancy> CreateVacancyAsync(SourceType sourceType, HeadHunterSnippet snippet,
                                                        HeadHunterVacancy headHunterVacancy)
        {
            var currencyName = headHunterVacancy.Salary?.Currency?.Trim();
            var vacancy      = CreateVacancy(snippet, headHunterVacancy);

            vacancy.EmployerId   = (await GetOrCreateEmployerAsync(sourceType, headHunterVacancy)).Id;
            vacancy.AreaId       = (await GetOrCreateAreaAsync(sourceType, headHunterVacancy))?.Id;
            vacancy.CurrencyId   = currencyName == null ? null : (await GetOrCreateCurrencyAsync(currencyName)).Id;
            vacancy.SourceTypeId = sourceType.Id;
            vacancy.ScheduleId   = (await GetOrCreateScheduleAsync(headHunterVacancy))?.Id;
            vacancy.EmploymentId = (await GetOrCreateEmploymentAsync(headHunterVacancy))?.Id;
            vacancy.IsRemote     = headHunterVacancy.Schedule?.Id == "remote";
            return(vacancy);
        }
コード例 #4
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);
        }
コード例 #5
0
        private static Vacancy CreateVacancy(HeadHunterSnippet snippet, HeadHunterVacancy headHunterVacancy)
        {
            var vacancy = new Vacancy
            {
                SourceId         = headHunterVacancy.Id,
                Title            = headHunterVacancy.Name,
                Descriptions     = headHunterVacancy.Description,
                Responsibilities = snippet.Responsibility,
                SalaryFrom       = headHunterVacancy.Salary?.From,
                SalaryTo         = headHunterVacancy.Salary?.To,
                IsSalaryGross    = headHunterVacancy.Salary?.IsGross,
                Url                = headHunterVacancy.Url,
                RawData            = headHunterVacancy.RawData,
                IsArchived         = snippet.Archived,
                SourceCreatedDate  = headHunterVacancy.CreatedDate,
                SourceUpdatedDate  = headHunterVacancy.UpdateDate,
                ContentUpdatedDate = headHunterVacancy.UpdateDate
            };

            return(vacancy);
        }