Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

SuperJob resume updater on Ruby on Rails

 

Ну, коли уже есть в этом блоге скрипт обновления резюме через API HeadHunter - почему бы не написать скрипт, делающий то же самое, но на Суперджобе... вполне, вроде бы, логично. Для разнообразия и первый и второй скрипты написаны в качестве application Ruby on Rails; официальный клиент API SuperJob уже сто лет как доступен на гитхабе, кому нужен именно php, забирайте оттуда.

 

 

Рабочий пример описанного в статье кода, в числе других Rails Examples - всегда возможно найти в тестовом блоге автора на herokuapp.com, welcome.

 

Увы, текущее положение дел и на HeadHunter, и на SuperJob (да и не только там) - совсем не радует сегодня: количество адекватных вакансий в моей профессиональной сфере деятельности уменьшилось, по моим же субъективным оценкам, на порядок, если не больше, подавляющее большинство предлагаемых работодателями рабочих мест - безнадежно-серые, как жизнь в России, gray salary, самые разнообразные формы цветных зарплат и просто черный нал. Подробнее об этой безрадостной на рынке труда ситуации см. статью блога Русский шансон на российском рынке труда. Интермедия, здесь же, не тратя лишних слов, переходим прямиком к скрипту, написанному, конечно, довольно поспешно - не стесняйтесь изменить, допилить или форкнуть - и тем не менее, полностью рабочему, что удостоверяет скринкаст в начале статьи. Кто не в теме; - из API SuperJob и API HeadHunter возможно вытащить практически любую информацию вашего аккаунта, от количества просмотров резюме до перечня подходящих вакансий, и не только; я же, как видите, for example ограничился функцией обновления резюме и публикацией ответов сервера. Это далеко не предел, дерзайте. Вместо curl использован гем typhoeus, не забудьте включить в Gemfile своего rails-app.

 

logics

def index
		id_superjob = ENV['ID_SUPERJOB']
		secret_superjob = ENV['SECRET_SUPERJOB']

		if params[:code].present?
			response = Typhoeus::Request.post('https://api.superjob.ru/2.0/oauth2/access_token/',
				params: { :code => params[:code],
					:client_id => id_superjob,
					:client_secret => secret_superjob,
					:redirect_uri => 'https://masterpro.herokuapp.com/superjob/index'
				}
			)
			hash = JSON.parse(response.body)
			response = Typhoeus::Request.post('https://api.superjob.ru/2.0/user_cvs/',
				headers: { Authorization: "Bearer #{hash['access_token']}" }
			)
			response = JSON.parse(response.body)
			@response = []
			response['objects'].each do |ob|
				response = Typhoeus::Request.post('https://api.superjob.ru/2.0/user_cvs/update_datepub/' + "#{ob['id']}",
					headers: { Authorization: "Bearer #{hash['access_token']}" }
				)
				@response << ob['profession']
				@response << JSON.parse(response.body)
			end
		end
end

 index.html.erb

<% if params[:code].nil? %>
<%= link_to 'Обновить резюме', 'https://www.superjob.ru/authorize/?client_id=' + ENV['ID_SUPERJOB'] + '&redirect_uri=https%3a%2f%2fmasterpro.herokuapp.com%2fsuperjob%2findex&state=custom' %>
     <% else %>
      <% @response.each do |line| %>
      <%= line %><br>
      <% end %>
     <%= link_to 'Back', superjob_index_path %>
<% end %>

2 комментарии

  • Aleksej

    написал Aleksej

    Понедельник, 16 октября 2017 15:07

    Все не так.
    Здесь не получится "запустить скрипт".
    Начинайте с азов: https://masterpro.ws/ruby-on-rails-eto-prosto
    Добейтесь для начала, чтоб хотя б стартовая страница вашего нового проекта отображалась в браузере.
    Если статьи недостаточно, "чтоб начать", велкам на форум, создавайте топик, буду отвечать по мере сил и времени.

  • Данила

    написал Данила

    Понедельник, 16 октября 2017 13:30

    Здравствуйте!

    Не совсем понял как можно запустить данный скрипт?

    Установил Ruby 2.4.2p198 на Ubuntu
    Создал файл sj.rb
    в него скопировал содержимое вашего скрипта, поменял 'ID_SUPERJOB' и 'SECRET_SUPERJOB' на свои.

    запустил скрипт
    danila@test: /home/danila/superjob# ruby sj.rb

    выдает:
    sj.rb:4:in `': undefined local variable or method `request' for main:Object (NameError)

    Что я не так сделал, подскажите плиз?

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

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