Порт на ruby php-скрипта, позволяющего через API HeadHunter одним кликом обновить все свои резюме, сколько бы их там ни было у вас на HeadHunter... вернее сказать, порт на Ruby on Rails. Код предтечи по ссылке, там же пространные комментарии, вполне приемлемые и в контексте приведенного далее скрипта (логика не менялась, разумеется, только вместо curl использован гем typhoeus). Можно глянуть видео или потестировать демку, а можно раскатать новый rails-app, создать приложение на dev.hh.ru/admin и попробовать самостоятельно.
Update 04.04.2022. Все, кто хотел бы, используя описанную логику кода или любую иную, поэкспериментировать с API HeadHunter, примите добрый совет: не пробуйте этого делать на праздниках и уикендах, в такие дни API HeadHunter, случается, или лежит, или возвращает голимую херню вместо обусловленного докой JSON. На прошедших выходных имел случай в *дцатый раз убедиться в справедливости данного тезиса; подробно не анализировал, ибо не вижу в данном случае ни малейшего смысла терять свое время. А внешняя фабула такова: ранним утречком в понедельник, часиков эдак в 11 или 12, появляются, видимо, на работе гениальные российские прогеры/девопсы HeadHunter и поднимают свой API, т.е. плюс-минус к полудню все начинает, как ни в чем ни бывало, работать. Обращаться в саппорт с этим бесполезно, последует обычное русское #ихтамнет и #авотнедокажете, посему просто примите к сведению сказанное: ну вот так люди здесь живут и работают, иначе не умеют, въелось у них в плоть и кровь... подробно развивать данный тезис в контексте происходящих невеселых событий в данный момент не стану, по вполне понятным причинам, но вы меня поняли.
logics
def index
id_hh = ENV['ID_HH']
secret_hh = ENV['SECRET_HH']
if params[:code].present?
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/resumes/mine',
method: :get,
headers: { Authorization: "Bearer #{hash['access_token']}" }
)
response = JSON.parse(response.body)
@response = []
response['items'].each do |item|
response = Typhoeus::Request.post('https://api.hh.ru/resumes/' + item['id'] + '/publish',
headers: { Authorization: "Bearer #{hash['access_token']}" }
)
if response.body.blank?
@response << 'Резюме ' + '"' + item['title'] + '"' + ' успешно обновлено.'
else
@response << 'Слишком часто. Резюме ' + '"' + item['title'] + '"' + ' было обновлено ' + item['updated']
end
end
end
end
index.html.erb
<% if params[:code].nil? %>
<%= link_to 'Обновить резюме', 'https://hh.ru/oauth/authorize?response_type=code&client_id=' + ENV['ID_HH'] %>
<% else %>
<% @response.each do |line| %>
<%= line %><br>
<% end %>
<%= link_to 'Back', hh_index_path %>
<% end %>
Комментарии в блоге