class BookmeterScraper::Bookmeter

Constants

DEFAULT_CONFIG_PATH

Attributes

log_in_user_id[R]

Public Class Methods

log_in(mail = nil, password = nil) { |config| ... } click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 12
def log_in(mail = nil, password = nil)
  Bookmeter.new.tap do |bookmeter|
    if block_given?
      config = Configuration.new
      yield config
      bookmeter.log_in(config.mail, config.password)
    else
      bookmeter.log_in(mail, password)
    end
  end
end
new(agent = nil) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 26
def initialize(agent = nil)
  @agent          = agent.nil? ? Agent.new : agent
  @scraper        = Scraper.new(@agent)
  @logged_in      = false
  @log_in_user_id = nil
end

Public Instance Methods

followers(user_id = @log_in_user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 94
def followers(user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  @scraper.fetch_followers(user_id)
end
followings(user_id = @log_in_user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 89
def followings(user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  @scraper.fetch_followings(user_id)
end
log_in(mail = nil, password = nil) { |config| ... } click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 33
def log_in(mail = nil, password = nil)
  raise BookmeterError if @agent.nil?

  configuration = if block_given?
                    Configuration.new.tap { |config| yield config }
                  elsif mail.nil? && password.nil?
                    Configuration.new(DEFAULT_CONFIG_PATH)
                  else
                    Configuration.new.tap do |config|
                      config.mail     = mail
                      config.password = password
                    end
                  end

  @log_in_user_id = @agent.log_in(configuration)
  @logged_in      = !@log_in_user_id.nil?
end
logged_in?() click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 51
def logged_in?
  @logged_in
end
profile(user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 55
def profile(user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  @scraper.fetch_profile(user_id)
end
read_books(user_id = @log_in_user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 60
def read_books(user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  fetch_books(user_id, :read_books_uri)
end
read_books_in(year, month, user_id = @log_in_user_id) { |b| ... } click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 65
def read_books_in(year, month, user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX

  date = Time.local(year, month)
  books = @scraper.fetch_read_books(user_id, date)
  books.each { |b| yield b } if block_given?
  books.to_a
end
reading_books(user_id = @log_in_user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 74
def reading_books(user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  fetch_books(user_id, :reading_books_uri)
end
tsundoku(user_id = @log_in_user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 79
def tsundoku(user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  fetch_books(user_id, :tsundoku_uri)
end
wish_list(user_id = @log_in_user_id) click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 84
def wish_list(user_id = @log_in_user_id)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  fetch_books(user_id, :wish_list_uri)
end

Private Instance Methods

fetch_books(user_id, uri_method) { |book| ... } click to toggle source
# File lib/bookmeter_scraper/bookmeter.rb, line 102
def fetch_books(user_id, uri_method)
  raise ArgumentError unless user_id =~ USER_ID_REGEX
  raise ArgumentError unless BookmeterScraper.methods.include?(uri_method)

  books = @scraper.fetch_books(user_id, uri_method)
  books.each { |book| yield book } if block_given?
  books.to_a
end