class HQTrivia::Badges

The Badges Class. A User, but their badges.

Public Class Methods

new(id, key) click to toggle source

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

badges_count() click to toggle source

@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
business(level = 3) click to toggle source

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
entertainment(level) click to toggle source

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
geography(level) click to toggle source

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
history(level) click to toggle source

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
literature(level) click to toggle source

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
movies(level) click to toggle source

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
music(level) click to toggle source

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
nature(level) click to toggle source

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
science(level) click to toggle source

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
sports(level) click to toggle source

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
tv(level) click to toggle source

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
types() click to toggle source

@return [Integer] the amount of achievement types

# File lib/hqtrivia/badges.rb, line 23
def types
  @data['families'].count
end