class MyEpisodes::Client
Public Class Methods
create(username, password, agent=Mechanize.new)
click to toggle source
# File lib/my_episodes/client.rb, line 5 def self.create(username, password, agent=Mechanize.new) client = self.new(agent) client.login(username, password) client end
new(agent=Mechanize.new)
click to toggle source
# File lib/my_episodes/client.rb, line 11 def initialize(agent=Mechanize.new) @agent = agent @page = nil end
Public Instance Methods
login(username, password)
click to toggle source
# File lib/my_episodes/client.rb, line 16 def login(username, password) unless @page page = @agent.get(login_url) form = page.form_with(action: 'login.php', method: 'POST') form.username = username form.password = password form.u = life_wasted @page = form.submit(form.buttons.first) ensure_logged_in end end
logout()
click to toggle source
# File lib/my_episodes/client.rb, line 32 def logout if @page @page.link_with(text: /Logout/).click @page = nil end end
shows()
click to toggle source
# File lib/my_episodes/client.rb, line 28 def shows @shows ||= Shows.new(parser).create(shows_links).to_a end
Private Instance Methods
ensure_logged_in()
click to toggle source
# File lib/my_episodes/client.rb, line 66 def ensure_logged_in if still_on_login_page? && login_warning? @page = nil raise AuthenticationError, 'wrong username / password' end end
life_wasted()
click to toggle source
# File lib/my_episodes/client.rb, line 53 def life_wasted @life_wasted ||= 'life_wasted.php' end
login_url()
click to toggle source
# File lib/my_episodes/client.rb, line 49 def login_url @login_url ||= 'http://www.myepisodes.com/login.php' end
login_warning?()
click to toggle source
# File lib/my_episodes/client.rb, line 61 def login_warning? warning_text = @page.search('#divContainer div.warning').text.strip warning_text && warning_text.match(/wrong username.+password/i) end
parser()
click to toggle source
# File lib/my_episodes/client.rb, line 41 def parser @parser ||= TableParser.new end
shows_links()
click to toggle source
# File lib/my_episodes/client.rb, line 45 def shows_links @shows_links ||= @page.links_with(href: /views\.php\?type=epsbyshow/) end
still_on_login_page?()
click to toggle source
# File lib/my_episodes/client.rb, line 57 def still_on_login_page? @page.title && @page.title.match(/: Login Page/i) end