class CodeBadges::CademySite

CodeCademy web automation and scraper

Constants

ACHIEVEMENTS_DIR
ACHIEVEMENT_XPATH
ACH_DATE_XPATH
ACH_TITLE_XPATH
COURSES_XPATH
LOGIN_BUTTON_ID
LOGIN_URL
MAIN_URL
PASSWORD_TEXTFIELD_ID
USERNAME_TEXTFIELD_ID
USERS_URL

Public Class Methods

cadet_achievements_url(cadet) click to toggle source
# File lib/codebadges/site.rb, line 30
def self.cadet_achievements_url(cadet)
  "#{USERS_URL}/#{cadet}/#{ACHIEVEMENTS_DIR}"
end
new() { |self| ... } click to toggle source
# File lib/codebadges/site.rb, line 22
def initialize
  @browser = Mechanize.new do |agent|
    agent.user_agent_alias = 'Linux Firefox'
  end

  yield self if block_given?
end

Public Instance Methods

extract_achievements() click to toggle source
# File lib/codebadges/site.rb, line 46
def extract_achievements
  @browser.page.xpath(ACHIEVEMENT_XPATH).map do |achievement|
    title = achievement.xpath(ACH_TITLE_XPATH).text
    date = Date.parse(achievement.xpath(ACH_DATE_XPATH).text)
    [title, date]
  end.to_h
end
extract_main_courses() click to toggle source
# File lib/codebadges/site.rb, line 54
def extract_main_courses
  @browser.page.xpath(COURSES_XPATH).map do |course|
    [course.text, URI.join(MAIN_URL, course.attribute('href').value)]
  end.to_h
end
goto(url) click to toggle source
# File lib/codebadges/site.rb, line 34
def goto(url)
  @browser.get(url)
end
login(username, password) click to toggle source
# File lib/codebadges/site.rb, line 38
def login(username, password)
  @browser.page.form do |form|
    form.field(id: USERNAME_TEXTFIELD_ID).value = username
    form.field(id: PASSWORD_TEXTFIELD_ID).value = password
    form.submit
  end
end