class HQTrivia::Badges
The Badges
Class. A User, but their badges.
Public Class Methods
Initialize a new user. Get all their stats. Relax. @param id [Integer] the ID of the user. @param key [String] an API key, to get info. @raise [HQTrivia::Errors::InvalidKey] if the api key is invalid @raise [HQTrivia::Errors::InvalidUser] if the user id is invalid
# File lib/hqtrivia/badges.rb, line 8 def initialize(id, key) @data = JSON.parse(RestClient.get("https://api-quiz.hype.space/achievements/v2/#{id}", Authorization: key)) rescue RestClient::NotFound raise HQTrivia::Errors::InvalidUser, "This user doesn't exist!" rescue RestClient::Unauthorized raise HQTrivia::Errors::InvalidKey, "This API Key is invalid!" end
Public Instance Methods
@see [User#badges_count] @return [Integer] the amount of badges this person has
# File lib/hqtrivia/badges.rb, line 18 def badges_count @data['earnedAchievementCount'] end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 29 def business(level = 3) data = @data['families'].find { |type| type['name'] == 'Business' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 37 def entertainment(level) data = @data['families'].find { |type| type['name'] == 'Entertainment' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 45 def geography(level) data = @data['families'].find { |type| type['name'] == 'Geography' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 53 def history(level) data = @data['families'].find { |type| type['name'] == 'History' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 61 def literature(level) data = @data['families'].find { |type| type['name'] == 'Literature' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 69 def movies(level) data = @data['families'].find { |type| type['name'] == 'Movies' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 77 def music(level) data = @data['families'].find { |type| type['name'] == 'Music' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 85 def nature(level) data = @data['families'].find { |type| type['name'] == 'Nature' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 93 def science(level) data = @data['families'].find { |type| type['name'] == 'Science' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 101 def sports(level) data = @data['families'].find { |type| type['name'] == 'Sports' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
Get badge info for a specific level. @return [Badge] badge info for this badge
# File lib/hqtrivia/badges.rb, line 109 def tv(level) data = @data['families'].find { |type| type['name'] == 'TV' } badge = data['earnedAchievements'].find { |le| le['familyOrder'] == (level - 1) } HQTrivia::Badge.new(badge) end
@return [Integer] the amount of achievement types
# File lib/hqtrivia/badges.rb, line 23 def types @data['families'].count end