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