class Strigil::StrigilClient

Attributes

client[R]

Public Class Methods

new(params) click to toggle source
# File lib/strigil/strigil_client.rb, line 7
def initialize(params)
  target = params[:target]
  username = params[:username]
  password = params[:password]

  @client = Selenium::WebDriver.for(params[:browser].to_sym)

  login_and_make_legacy(username, password)

  client.navigate.to "https://reddit.com/u/#{target}/comments"
end

Public Instance Methods

close() click to toggle source
# File lib/strigil/strigil_client.rb, line 23
def close
  client.close
end
iterate() click to toggle source
# File lib/strigil/strigil_client.rb, line 27
def iterate
  begin
    client.find_element(link_text: "next ›").click
  rescue
    raise EndOfQueueError
  end
end
pull_comments() click to toggle source
# File lib/strigil/strigil_client.rb, line 19
def pull_comments
  Strigil::CommentsParser.parse(client)
end

Private Instance Methods

login_and_make_legacy(username, password) click to toggle source
# File lib/strigil/strigil_client.rb, line 37
def login_and_make_legacy(username, password)
  login_to_reddit(username, password)
  set_legacy_preference
end
login_to_reddit(username, password) click to toggle source
# File lib/strigil/strigil_client.rb, line 42
def login_to_reddit(username, password)
  client.navigate.to 'https://reddit.com/login'

  login_panel = client.find_element(id: "login-form")

  username_field = login_panel.find_element(id: "user_login")
  password_field = login_panel.find_element(id: "passwd_login")
  login_button = login_panel.find_element(tag_name: "button", class: "c-btn")

  username_field.send_keys(username)
  password_field.send_keys(password)

  login_button.click

  wait = Selenium::WebDriver::Wait.new(timeout: 5)
  wait.until do
    client.find_element(id: "header-bottom-right").find_element(link_text: username)
  end
end
set_legacy_preference() click to toggle source
# File lib/strigil/strigil_client.rb, line 62
def set_legacy_preference
  client.navigate.to 'https://reddit.com/prefs/'

  legacy_box = client.find_element(id: "profile_opt_out")

  unless legacy_box.attribute(:checked)
    legacy_box.click

    save_button = client.find_element(class: "save-preferences")
    save_button.click
  end
end