Class: CodeBadges::CodecademyBadges
- Inherits:
-
Object
- Object
- CodeBadges::CodecademyBadges
- Defined in:
- lib/codebadges/badges.rb
Overview
This class get the user account as an input return a hash of user’s badges information
Constant Summary collapse
- TITLE_XPATH =
"//div[@class = 'grid-row']//h5[@class = 'margin-top--1']"- DATE_XPATH =
"//small[@class = 'text--ellipsis']"- USERS_URL =
'http://www.codecademy.com/users'- ACHIEVEMENTS_DIR =
'achievements'
Class Method Summary collapse
- .get_badges(username) ⇒ Object
- .get_dates(document) ⇒ Object
- .get_html(username) ⇒ Object
- .get_titles(document) ⇒ Object
- .integrate(titles, dates) ⇒ Object
Class Method Details
.get_badges(username) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/codebadges/badges.rb', line 15 def self.get_badges(username) doc = get_html(username) titles = get_titles(doc) dates = get_dates(doc) integrate(titles, dates) end |
.get_dates(document) ⇒ Object
32 33 34 35 |
# File 'lib/codebadges/badges.rb', line 32 def self.get_dates(document) dates = document.xpath(DATE_XPATH) dates.map { |d| Date.parse(d) } end |
.get_html(username) ⇒ Object
22 23 24 25 |
# File 'lib/codebadges/badges.rb', line 22 def self.get_html(username) url = "#{USERS_URL}/#{username}/#{ACHIEVEMENTS_DIR}" Nokogiri::HTML(open(url)) end |
.get_titles(document) ⇒ Object
27 28 29 30 |
# File 'lib/codebadges/badges.rb', line 27 def self.get_titles(document) titles = document.xpath(TITLE_XPATH) titles.map { |t| t.text } end |
.integrate(titles, dates) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/codebadges/badges.rb', line 37 def self.integrate(titles, dates) badge_array = titles.each_with_index.map do |_, index| [titles[index], dates[index]] end Hash[badge_array] end |