mhuggins/lol_client

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# LolClient

[![Build Status](https://secure.travis-ci.org/mhuggins/lol_client.png)](http://travis-ci.org/mhuggins/lol_client)
[![Code Climate](https://codeclimate.com/github/mhuggins/lol_client.png)](https://codeclimate.com/github/mhuggins/lol_client)

LolClient is a RubyGem that makes it easy to communicate with Riot's
[League of Legends API](https://developer.riotgames.com/).

## Installation

Add this line to your application's Gemfile:

    gem 'lol_client'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install lol_client

## Documentation

The [full documentation](http://rubydoc.info/github/mhuggins/lol_client/master/frames)
can be found on rubydoc.info.

## Usage

After including the gem in your project, instantiate a new `LolClient`
instance.  Optionally, a region can be passed as well.  If unspecified, the
region defaults to `:na` (North America).

    client = LolClient.new('YOUR_API_KEY')            # => #<LolClient>
    client = LolClient.new('YOUR_API_KEY', :euw)      # => #<LolClient>

All API calls happen through your `LolClient` instance.  Unless otherwise
specified by API the documentation, each call counts towards the use of your rate limit. A basic explanation of
each call is included below.

### Champions

Calling the `champions` method returns an array of `LolClient::Champion`
objects.

    champions = client.champions                      # => [#<LolClient::Champion>, ...]
    champions.size                                    # => 118

    champion = champions.first                        # => #<LolClient::Champion>
    champion.id                                       # => 266
    champion.name                                     # => "Aatrox"
    champion.active?                                  # => true
    champion.bot_enabled?                             # => false
    champion.bot_mm_enabled?                          # => false
    champion.free_to_play?                            # => false
    champion.ranked_play_enabled?                     # => true
    champion.attack_rank                              # => 8
    champion.defense_rank                             # => 4
    champion.difficulty_rank                          # => 6
    champion.magic_rank                               # => 3

### Summoner(s) By Name

Calling the `summoner_by_name` method with a summoner name will return a
`LolClient::Summoner` object.

    summoner = client.summoner_by_name('Finklebaum')  # => #<LolClient::Summoner>
    summoner.id                                       # => 45444628
    summoner.level                                    # => 30
    summoner.name                                     # => "Finklebaum"
    summoner.profile_icon_id                          # => 6
    summoner.revised_at                               # => 2014-03-08 05:53:38 -0700

Calling the `summoners_by_name` method with an array of summoner names will
return a hash of `LolClient::Summoner` objects.  The hash keys are the
lower-cased summoner names.

    summoners = client.summoners_by_name(%w[Finklebaum Bjergsen])
    # => {"bjergsen" => #<LolClient::Summoner>, "finklebaum" => #<LolClient::Summoner>}

### Summoner(s)

Calling the `summoner` method with a summoner ID will return a
`LolClient::Summoner` object.

    summoner = client.summoner(45444628)
    # => #<LolClient::Summoner>

Calling the `summoners` method with an array of summoner IDs will return a hash
of `LolClient::Summoner` objects.  The hash keys are the summoner IDs.

    summoners = client.summoners([33010896, 45444628])
    # => {"33010896" => #<LolClient::Summoner>, "45444628" => #<LolClient::Summoner>}

### Summoner Name(s)

Calling the `summoner_name` method with a summoner ID will return the
summoner's name as a string.

    name = client.summoner_name(45444628)
    # => "Finklebaum"

Calling the `summoner_names` method with an array of summoner IDs will return
the summoner names as a hash.  The hash keys are the summoner IDs.

    names = client.summoner_names([33010896, 45444628])
    # => {"33010896"=>"Bjergsen", "45444628"=>"Finklebaum"}

### Recent Games

Calling the `recent_games` method with a summoner's ID returns an array of
`LolClient::Game` objects.

    games = client.recent_games(45444628)             # => [#<LolClient::Game>, ...]
    games.zie                                         # => 10

    game = games.first                                # => #<LolClient::Game>
    game.id                                           # => 1302213136
    game.mode                                         # => "CLASSIC"
    game.type                                         # => "MATCHED_GAME"
    game.type                                         # => "RANKED_SOLO_5x5"
    game.team_id                                      # => 200
    game.created_at                                   # => 2014-03-08 13:53:36 -0700
    game.invalid?                                     # => false
    game.level                                        # => 30
    game.map_id                                       # => 1
    game.champion_id                                  # => 115
    game.spell1                                       # => 4
    game.spell2                                       # => 14

    stats = game.raw_stats                            # => #<LolClient::RawStats>
    stats.assists                                     # => 5
    stats.champions_killed                            # => 5
    stats.double_kills                                # => 1
    stats.gold_earned                                 # => 11164
    stats.gold_spent                                  # => 11745
    stats.item0                                       # => 3157
    stats.item1                                       # => 3174
    stats.item2                                       # => 1056
    stats.item3                                       # => 3255
    stats.item4                                       # => 1026
    stats.item5                                       # => 1058
    stats.item6                                       # => 3340
    stats.killing_sprees                              # => 1
    stats.largest_killing_spree                       # => 3
    stats.largest_multi_kill                          # => 2
    stats.level                                       # => 16
    stats.magic_damage_dealt_player                   # => 131246
    stats.magic_damage_dealt_to_champions             # => 23346
    stats.magic_damage_taken                          # => 9182
    stats.minions_killed                              # => 173
    stats.neutral_minions_killed                      # => 4
    stats.neutral_minions_killed_your_jungle          # => 4
    stats.num_deaths                                  # => 10
    stats.physical_damage_dealt_player                # => 12085
    stats.physical_damage_dealt_to_champions          # => 953
    stats.physical_damage_taken                       # => 13583
    stats.team                                        # => 200
    stats.time_played                                 # => 2177
    stats.total_damage_dealt                          # => 144948
    stats.total_damage_dealt_to_champions             # => 25886
    stats.total_damage_taken                          # => 23281
    stats.total_heal                                  # => 1307
    stats.total_time_crowd_control_dealt              # => 604
    stats.total_units_healed                          # => 1
    stats.true_damage_dealt_player                    # => 1616
    stats.true_damage_dealt_to_champions              # => 1586
    stats.true_damage_taken                           # => 516
    stats.ward_placed                                 # => 6
    stats.win?                                        # => false

    players = game.fellow_players                     # => [#<LolClient::Player>, ...]
    players.size                                      # => 200

    player = game.fellow_players.first                # => #<LolClient::Player>
    player.champion_id                                # => 37
    player.summoner_id                                # => 27796912
    player.team_id                                    # => 100

### Leagues & League Entries

Calling the `leagues` method with a summoner ID returns an array of
`LolClient::League` objects.

    leagues = client.leagues(45444628)                # => [#<LolClient::League>, ...]
    leagues.size                                      # => 1

    league = leagues.first                            # => #<LolClient::League>
    league.name                                       # => "Riven's Fists"
    league.queue                                      # => "RANKED_SOLO_5x5"
    league.tier                                       # => "BRONZE"

    entries = league.entries                          # => [#<LolClient::LeagueEntry>, ...]
    entries.size                                      # => 174

    entry = league.entries.first                      # => #<LolClient::LeagueEntry>
    entry.fresh_blood?                                # => true
    entry.hot_streak?                                 # => false
    entry.inactive?                                   # => false
    entry.last_played                                 # => -1
    entry.name                                        # => "Riven's Fists"
    entry.points                                      # => 0
    entry.player_or_team_id                           # => "24511364"
    entry.player_or_team_name                         # => "Krispycakes"
    entry.queue_type                                  # => "RANKED_SOLO_5x5"
    entry.rank                                        # => "II"
    entry.tier                                        # => "BRONZE"
    entry.veteran?                                    # => false
    entry.wins                                        # => 5

Calling the `league_entries` method with a summoner ID returns an array of
`LolClient::LeagueEntry` objects.

    entries = client.league_entries(45444628)         # => [#<LolClient::LeagueEntry>, ...]
    entries.size                                      # => 1

### Challenger League

Calling the `challenger_league` method with a league type returns a
`LolClient::League` object.  The league type can be one of `:RANKED_SOLO_5x5`,
`:RANKED_TEAM_3x3`, or `:RANKED_TEAM_5x5`.

    league = client.challenger_league(:RANKED_SOLO_5x5)  # => #<LolClient::League>
    league.name                                          # => "Taric's Enforcers"
    league.queue                                         # => "RANKED_SOLO_5x5"
    league.tier                                          # => "CHALLENGER"
    league.entries                                       # => [#<LolClient::LeagueEntry>, ...]
    league.entries.size                                  # => 200

### Static Data

#### Champions

To do...

#### Items

To do...

#### Masteries

To do...

#### Runes

To do...

#### Summoner Spells

To do...

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request