class Behave::Leaderboard

Public Class Methods

create(name, referenceId, attrs={}) click to toggle source

Create a new leaderboard

# File lib/behave.rb, line 117
def self.create(name, referenceId, attrs={})
  attrs[:name] = name
  attrs[:reference_id] = referenceId
  Behave.api "/leaderboards", :post, body: attrs
end
delete(leaderboardId) click to toggle source

Remove a leaderboard

# File lib/behave.rb, line 124
def self.delete(leaderboardId)
  Behave.api "/leaderboards/#{leaderboardId}", :delete
end
results(leaderboardId, options={}) { |res, options| ... } click to toggle source

Fetch leaderboard results

# File lib/behave.rb, line 129
def self.results(leaderboardId, options={})
  options[:limit] ||= 1000
  options[:max] ||= 0
  options[:page] ||= 1
  begin
    options[:offset] = (options[:page] - 1) * options[:limit]
    res = Behave.api "/leaderboards/#{leaderboardId}/results", :post, body: options
    count = res.count
    # Get total fetched since start of iteration
    total = (options[:page] - 1) * options[:limit] + count
    # If above, keep only needed elements
    res = res[0..(count - (total - options[:max]))] if options[:max] > 0 && total > options[:max]
    return res unless block_given?
    yield res, options[:page]
    options[:page] += 1
  # Continue wgile still need to fetch more results
  end while count > 0 && count == options[:limit] && (options[:max] == 0 || total < options[:max])
end