class Achievement

Constants

MAX_LENGTH
PADDING
PADDING_LENGTH
SPACE

Attributes

description[RW]
id[RW]
name[RW]
xp[RW]

Public Class Methods

locked_achievements(credentials) click to toggle source
# File lib/minitest/naga/achievement.rb, line 23
def locked_achievements(credentials)
  options = { headers: { "Content-Type" => "application/json" } }
  url = NagaApiClient.BASE_URL + "achievements?" + "authentication_token=" + credentials[:authentication_token] + "&email=" + credentials[:email]
  response = HTTParty.get(url, options)
  locked_achievements = {}
  response.parsed_response["locked_achievements"].each do |locked_achievement|
    achievement = Achievement.new(locked_achievement["id"], locked_achievement["name"], locked_achievement["description"], locked_achievement["xp"], locked_achievement["link"], locked_achievement["comment"])
    locked_achievements[achievement.name] = achievement
  end
  locked_achievements
end
new(id, name, description, xp, link, comment) click to toggle source
# File lib/minitest/naga/achievement.rb, line 12
def initialize(id, name, description, xp, link, comment)
  @id = id
  @name = name
  @description = description
  @xp = xp
  @link = link
  @comment = comment
end

Public Instance Methods

to_s() click to toggle source
# File lib/minitest/naga/achievement.rb, line 54
def to_s
  puts @id
  puts @name
  puts @description
  puts @xp
  puts @link
  puts @comment
end
to_s_unlock() click to toggle source
# File lib/minitest/naga/achievement.rb, line 63
def to_s_unlock
  puts SPACE * MAX_LENGTH
  puts PADDING + "Achievement unlocked!".ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
  puts PADDING + @name.ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
  description = "> " + @description
  puts PADDING + description.ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
  xp = "> " + @xp.to_s + " XP"
  if @comment && !@link
    puts PADDING + @comment.ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
  elsif @link && @comment
    puts PADDING + @link.ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
    puts PADDING + @comment.ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
  end
  puts PADDING + xp.ljust(MAX_LENGTH-PADDING_LENGTH).colorize(:yellow).colorize( :background => :black )
  puts SPACE * MAX_LENGTH
end
unlock(credentials) click to toggle source

public instance methods

# File lib/minitest/naga/achievement.rb, line 37
def unlock(credentials)
  url = NagaApiClient.BASE_URL + "achievements/unlock"
  options = { headers: { "Content-Type" => "application/x-www-form-urlencoded" } }
  options[:body] = "email=" + credentials[:email] + "&authentication_token=" + credentials[:authentication_token] + "&achievement_id=" + self.id.to_s
  response = HTTParty.post(url, options)
  parsed_response = response.parsed_response
  if parsed_response["error"]
    STDERR.puts(("Error: " + parsed_response["error"]).colorize(:red))
  else
    self.to_s_unlock
    if parsed_response["level_up"]
      puts "You just grew a level!".colorize(:black).colorize( :background => :green )
      puts "You are now Level #{parsed_response["level"]["number"].to_s} and have #{parsed_response["level"]["xp"].to_s} XP."
    end
  end
end