MasterLeague

The MasterLeague Gem is a Client that consumes the Master League API.

Installation

Add this line to your application's Gemfile:

gem 'master_league'

And then execute:

$ bundle

Or install it yourself as:

$ gem install master_league

Usage

Each record that is available through an API endpoint can be retrieved by a repository. Example:

repository = MasterLeague::HeroRepository.new

repository.each do |hero|
  puts "#{hero.name} (#{hero.role})"
end

# Abathur (Specialist)
# Alarak (Assassin)
# Anub'arak (Warrior)
# ...

You can also retrieve single records by their id:

hero = repository.find(33)
hero.name # => 'Tassadar'

When retrieving multiple Heroes from the API, some information are missing. You can reload a Hero's information by calling hero.reload.

Filtering

Depending on what API endpoint you're working with, there are some filters:

repository.limit(10)       # returns at most 10 records
repository.page(2)         # returns the second page of records
repository.order('date')   # orders the records by date (ascending)
repository.order('-date')  # orders the records by date (descending)
repository.where(hero: 33) # filters to the records having `hero` set to 33

You can also chain filters, as in:

repository.limit(15).page(2)

Not all API endpoints are open to every filter, here's a matrix for you:

/ default limit max limit paginatable orderable by where/filterable by
Heroes 20 60 yes nothing role
Maps not limitable not limitable no nothing nothing
Regions not limitable not limitable no nothing nothing
Patches not limitable not limitable no nothing nothing
Teams 20 100 yes nothing region
Players 20 100 yes nothing team, region
Tournaments 20 30 yes nothing region
Matches 10 25 yes id, date map, patch, tournament, stage, team, hero, player
Events unknown unknown unknown nothing is_live

When filtering with #where, use the corresponding id of a role, a region, a team, …, not the corresponding name.

Caching

As you're restricted in numbers of requests to the API, there's a simple caching mechanism built-in. In order to enable caching, call MasterLeague.enable_caching. This will cache every HTTP request/response you send against the API in ~/.config/master_league_cache.yml. When you try to query the API with an already made request, you get the cached response and don't actually query the API.

If you want disable caching after enabling it, call MasterLeague.disable_caching. If you want to clear the cache, call MasterLeague.cache.clear.

Authentication

As I don't have a valid premium access, authentication is missing.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/tbuehlmann/master_league.

License

The gem is available as open source under the terms of the MIT License.