class BookscanClient
Constants
- VERSION
Public Class Methods
new(logger: Logger.new(STDOUT), sleep: 0.5)
click to toggle source
# File lib/bookscan_client.rb, line 18 def initialize(logger: Logger.new(STDOUT), sleep: 0.5) @mechanize = Mechanize.new @logger = logger @sleep = sleep end
Public Instance Methods
books()
click to toggle source
# File lib/bookscan_client.rb, line 33 def books page = fetch(URL::MYPAGE) page.search("#sortable_box .showbook").map{|book_link| url = "#{BookscanClient::URL::ROOT}#{book_link.attr("href")}" params = CGI.parse(URI.parse(url).query) next unless %w[f h d].all?{|key| params.keys.include?(key) } image = book_link.search("img") book = BookscanClient::Model::Book.new(filename: params["f"][0], hash: params["h"][0], digest: params["d"][0]) book.image_url = image[0].attr("data-original") unless image.empty? book } end
login(email, password)
click to toggle source
# File lib/bookscan_client.rb, line 24 def login(email, password) @mechanize.post(URL::LOGIN, "email" => email, "password" => password) end
login?()
click to toggle source
# File lib/bookscan_client.rb, line 28 def login? names = cookies.map(&:name) names.include?("email") && names.include?("password") end
optimized_books()
click to toggle source
# File lib/bookscan_client.rb, line 48 def optimized_books page = fetch(URL::OPTIMIZED_BOOKS) page.search("a.download").map{|book_link| url = "#{BookscanClient::URL::ROOT}#{book_link.attr("href")}" params = CGI.parse(URI.parse(url).query) next unless %w[f d].all?{|key| params.keys.include?(key) } BookscanClient::Model::OptimizedBook.new(filename: params["f"][0], digest: params["d"][0]) } end
Private Instance Methods
fetch(url)
click to toggle source
# File lib/bookscan_client.rb, line 65 def fetch(url) @logger.info("GET #{url}...") @mechanize.get(url) end