class Duolingo::User
Attributes
all[R]
data[R]
response[R]
username[R]
Public Class Methods
new(username)
click to toggle source
# File lib/duolingo/user.rb, line 5 def initialize(username) @username = username @response = Faraday.get("http://www.duolingo.com/users/#{username}") @data = JSON.parse(response.body) @all = data['language_data']['pt']['points_ranking_data'] end
Public Instance Methods
admin?()
click to toggle source
# File lib/duolingo/user.rb, line 46 def admin? data['admin'] end
created_at()
click to toggle source
# File lib/duolingo/user.rb, line 50 def created_at data['created'].gsub("\n", "") end
current_languages()
click to toggle source
# File lib/duolingo/user.rb, line 27 def current_languages currently_studying = [] data['languages'].map do |lan| currently_studying << lan['language_string'] if lan['current_learning'] end currently_studying end
fields()
click to toggle source
# File lib/duolingo/user.rb, line 74 def fields ['username','bio','id','num_following','cohort','num_followers', 'learning_language_string','created','contribution_points','gplus_id','twitter_id','admin','invites_left','location','fullname','avatar','ui_language'] end
friends()
click to toggle source
# File lib/duolingo/user.rb, line 78 def friends all.select do |friend| friend unless friend['username'] == username.downcase end end
friends_stats()
click to toggle source
# File lib/duolingo/user.rb, line 84 def friends_stats friends.map do |friend| {username: friend['username'], points: friend['points_data']['total']} end end
full_name()
click to toggle source
# File lib/duolingo/user.rb, line 58 def full_name data['fullname'] end
get_all_info()
click to toggle source
# File lib/duolingo/user.rb, line 62 def get_all_info fields.map do |field| data[field] end end
languages_studied()
click to toggle source
# File lib/duolingo/user.rb, line 19 def languages_studied languages = [] data['languages'].map do |lan| languages << lan["language_string"] if lan["points"] > 0 end languages end
num_following()
click to toggle source
# File lib/duolingo/user.rb, line 54 def num_following data['num_following'] end
number_of_followers()
click to toggle source
# File lib/duolingo/user.rb, line 42 def number_of_followers data['num_followers'] end
points_for(language)
click to toggle source
# File lib/duolingo/user.rb, line 35 def points_for(language) points = data['languages'].map do |lan| lan['points'] if lan['language_string'] == language.capitalize end.compact "#{username} has #{points.first} points for #{language}" end
rank()
click to toggle source
# File lib/duolingo/user.rb, line 90 def rank data['language_data']['pt']['points_ranking_data'].detect do |user| user['username'] == username.downcase end['rank'] end
stats_for_languages_studied()
click to toggle source
# File lib/duolingo/user.rb, line 68 def stats_for_languages_studied data['languages'].select do |lan| lan if lan['points'] > 0 end end
total_points()
click to toggle source
# File lib/duolingo/user.rb, line 13 def total_points data['languages'].inject(0) do |sum, lan| sum + lan["points"] end end