class BookmeterScraper::Agent
Attributes
log_in_user_id[R]
Public Class Methods
new()
click to toggle source
# File lib/bookmeter_scraper/agent.rb, line 12 def initialize @agent = Mechanize.new do |a| a.user_agent_alias = Mechanize::AGENT_ALIASES.keys.reject do |ua_alias| %w(Android iPad iPhone Mechanize).include?(ua_alias) end.sample end @log_in_user_id = nil end
Public Instance Methods
log_in(config)
click to toggle source
# File lib/bookmeter_scraper/agent.rb, line 21 def log_in(config) raise ArgumentError if config.nil? page_after_submitting_form = nil @agent.get(BookmeterScraper::LOGIN_URI) do |page| page_after_submitting_form = page.form_with(action: '/login') do |form| form.field_with(name: 'mail').value = config.mail form.field_with(name: 'password').value = config.password end.submit end if page_after_logging_in? page_after_submitting_form mypage = page_after_submitting_form.link_with(text: 'マイページ').click @log_in_user_id = extract_user_id(mypage) else nil end end
logged_in?()
click to toggle source
# File lib/bookmeter_scraper/agent.rb, line 40 def logged_in? !@log_in_user_id.nil? end
Private Instance Methods
extract_user_id(page)
click to toggle source
# File lib/bookmeter_scraper/agent.rb, line 53 def extract_user_id(page) raise ArgumentError if page.nil? page.uri.to_s.match(/\/u\/(\d+)$/)[1] end
page_after_logging_in?(page)
click to toggle source
# File lib/bookmeter_scraper/agent.rb, line 47 def page_after_logging_in?(page) raise ArgumentError if page.nil? page.uri.to_s == BookmeterScraper::ROOT_URI + '/' end