Суббота, 02 сентября 2017 17:31

API HeadHunter: перечень откликов и история просмотров резюме на rails

Оцените материал
(0 голосов)

Продолжаем исследование актуальной версии API HeadHunter, начатое в материале API HeadHunter: скрипт для обновления резюме (php), и продолженное статьей HeadHunter resume updater on Ruby on Rails, иллюстрирующей процесс написания Ruby-on-Rails приложения. Попробуем оттолкнуться  от кода, описанного на форуме в топике HeadHunter negotiations on Rails, дописав его таким образом, чтобы получить - в виде удобных для просмотра HTML-таблиц - не только перечень ваших откликов на вакансии вкупе с реакцией на них работодателей, но и краткую историю просмотров резюме, что порой способно быть весьма удобной для соискателя фичей.

 

Update 04.04.2022. Все, кто хотел бы, используя описанную логику кода или любую иную, поэкспериментировать с API HeadHunter, примите добрый совет: не пробуйте этого делать на праздниках и уикендах, в такие дни API HeadHunter, случается, или лежит, или возвращает голимую херню вместо обусловленного докой JSON. На прошедших выходных имел случай в *дцатый раз убедиться в справедливости данного тезиса; подробно не анализировал, ибо не вижу в данном случае ни малейшего смысла терять свое время. А внешняя фабула такова: ранним утречком в понедельник, часиков эдак в 11 или 12, появляются, видимо, на работе гениальные российские прогеры/девопсы HeadHunter и поднимают свой API, т.е. плюс-минус к полудню все начинает, как ни в чем ни бывало, работать. Обращаться в саппорт с этим бесполезно, последует обычное русское #ихтамнет и #авотнедокажете, посему просто примите к сведению сказанное: ну вот так люди здесь живут и работают, иначе не умеют, въелось у них в плоть и кровь... подробно развивать данный тезис в контексте происходящих невеселых событий в данный момент не стану, по вполне понятным причинам, но вы меня поняли.

 

Dev banner 1

 

За более-менее подробными комментариями позвольте адресовать вас к уже упомянутым материалам блога и форума; здесь же публикую уже готовый код rails-приложения, представляющий из себя хотя и базовый, но, тем не менее, полностью работоспособный концепт, который совершенно нет нужды стесняться дорабатывать, хакать и форкать:

 

Блог на рельсах. Live Demo.

 

logics

def index
		 if params[:code].present?
			id_hh = ENV['ID_HH_CORR'] #'*******************'
			secret_hh = ENV['SECRET_HH_CORR'] #'*******************'
						response = Typhoeus::Request.post('https://hh.ru/oauth/token',
				params: { :grant_type => "authorization_code",
					:client_id => id_hh,
					:client_secret => secret_hh,
					:code => params[:code]
				}
			)
			hash = JSON.parse(response.body)

			response = Typhoeus::Request.get('https://api.hh.ru/negotiations/active?pages=1&per_page=15',
				method: :get,
				headers: { Authorization: "Bearer #{hash['access_token']}" }
			)
			@response = JSON.parse(response.body)

			response = Typhoeus::Request.get('https://api.hh.ru/resumes/mine',
				method: :get,
				headers: { Authorization: "Bearer #{hash['access_token']}" }
			)
			response = JSON.parse(response.body)
			@response1 = []

			response['items'].each do |item|
				response = Typhoeus::Request.get('https://api.hh.ru/resumes/' + item['id'] + '/views?pages=1&per_page=5',
					method: :get,
					headers: { Authorization: "Bearer #{hash['access_token']}" }
				)

				@response1 << JSON.parse(response.body)

			end
		end  
end 

view

<% if params[:code].nil? %>
<%=  link_to 'Получить перечень откликов и просмотров резюме', 'https://hh.ru/oauth/authorize?response_type=code&client_id=' + ENV['ID_HH_CORR'] %>
<% else %>
<h3>Отклики на резюме</h3>
<table class="HHCorrTable">
   <thead>
      <tr>
         <th>Company name</th>
         <th>Vacancy</th>
         <th>Id</th>
         <th>Read</th>
         <th>Archived</th>
         <th>Address</th>
         <th>Created at</th>
         <th>Updated at</th>
      </tr>
   </thead>
   <tbody>
      <% @response['items'].each do |item| %>
      <tr>
         <td><%= item['vacancy']['employer']['name'] %></td>
         <td><%= item['vacancy']['name'] %></td>
         <td><%= item['state']['name'] %></td>
         <td><%= item['read'] %></td>
         <td><%= item['vacancy']['archived'] %></td>
         <td><%= item['vacancy']['address'] %></td>
         <td><%= item['created_at'] %></td>
         <td><%= item['updated_at'] %></td>
      </tr>
      <% end %>
   </tbody>
</table>
<h3>Просмотры резюме</h3>
<table class="HHCorrTable">
   <thead>
      <tr>
         <th>Date</th>
         <th>Сompany name</th>
         <th>Logo</th>
      </tr>
   </thead>
   <tbody>
      <% @response1.each do |item| %>
      <% item['items'].each do |a| %>
      <tr>
         <td><%= a['created_at'] %></td>
         <td><a href="/<%= a['employer']['alternate_url'] %>" target="_blank" ><%= a['employer']['name'] %></a></td>
         <td><img src="/<%= a['employer']['logo_urls']['90'] %>" /></td>
      </tr>
      <% end %>
      <% end %>
   </tbody>
</table>
<% end %>

Последнее изменениеПонедельник, 04 апреля 2022 18:20

Оставить комментарий

Добавьте ваш комментарий