ruby-lol 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.autotest +2 -0
- data/.gitignore +17 -0
- data/.rspec +0 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +45 -0
- data/Rakefile +12 -0
- data/lib/lol.rb +6 -0
- data/lib/lol/champion.rb +64 -0
- data/lib/lol/client.rb +87 -0
- data/lib/lol/game.rb +92 -0
- data/lib/lol/league.rb +4 -0
- data/lib/lol/model.rb +15 -0
- data/lib/lol/player.rb +25 -0
- data/lib/lol/statistic.rb +25 -0
- data/lib/lol/version.rb +3 -0
- data/ruby-lol.gemspec +37 -0
- data/spec/fixtures/v1.1/get-champion.json +1 -0
- data/spec/fixtures/v1.1/get-game.json +1 -0
- data/spec/fixtures/v2.1/get-league.json +1075 -0
- data/spec/lol/champion_spec.rb +19 -0
- data/spec/lol/client_spec.rb +159 -0
- data/spec/lol/game_spec.rb +44 -0
- data/spec/lol/league_spec.rb +2 -0
- data/spec/lol/player_spec.rb +19 -0
- data/spec/lol/statistic_spec.rb +19 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/support/model_helpers.rb +91 -0
- metadata +301 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b867ffb05c47098f45beea30f1e091db52ac4fce
|
4
|
+
data.tar.gz: fa6668a7f1777938f9487bbdbc6b2cebbb57645f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 560e480835130b3e3a50f58e996d5e1aba42b908786d830671b2959dfc038185a6249d8092fb212213ec915d9bbfcdfba2fb0f4a253fe8b06701da8010055e86
|
7
|
+
data.tar.gz: a063f0f21d6ed47c5e9d64144b424b17cbe0ce29034c4cf399da46e8bd341bd670ba98b4080e624a158782e8846aac80aadc5b9fb2485ab50e6748ae95e9dc30
|
data/.autotest
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
File without changes
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Giovanni Intini
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# ruby-lol
|
2
|
+
[](https://coveralls.io/r/mikamai/ruby-lol) [](https://travis-ci.org/mikamai/ruby-lol) [](https://codeclimate.com/repos/52a9908c56b102320a0166a4/feed)
|
3
|
+
|
4
|
+
ruby-lol is a wrapper to the [Riot Games API](https://developer.riotgames.com).
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
gem 'ruby-lol'
|
11
|
+
|
12
|
+
And then execute:
|
13
|
+
|
14
|
+
$ bundle
|
15
|
+
|
16
|
+
Or install it yourself as:
|
17
|
+
|
18
|
+
$ gem install ruby-lol
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
require 'lol'
|
23
|
+
|
24
|
+
# defaults to euw
|
25
|
+
client = Lol::Client.new "my_api_key"
|
26
|
+
#<Lol::Client:0x007fd09d1abb00 @api_key="my_api_key", @region="euw">
|
27
|
+
|
28
|
+
# na
|
29
|
+
na_client = Lol::Client.new "my_api_key", :region => "na"
|
30
|
+
# => <Lol::Client:0x007fd09d1abb00 @api_key="my_api_key", @region="na">
|
31
|
+
|
32
|
+
# gets all champions
|
33
|
+
champions = client.champion
|
34
|
+
# => Array of Lol::Champion
|
35
|
+
|
36
|
+
# let's play a bit, who is free to play?
|
37
|
+
client.champion.select {|c| c.free_to_play }.map {|c| c.name}
|
38
|
+
# => %w(Aatrox Cassiopeia Lux Malphite MissFortune MonkeyKing Nautilus Sivir Talon Taric)
|
39
|
+
## Contributing
|
40
|
+
|
41
|
+
1. Fork it
|
42
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
43
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
44
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
45
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require "rspec/core/rake_task"
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
task :default => :spec
|
8
|
+
|
9
|
+
desc "Open an irb session preloaded with this library"
|
10
|
+
task :console do
|
11
|
+
sh "irb -rubygems -I . -r lib/lol.rb"
|
12
|
+
end
|
data/lib/lol.rb
ADDED
data/lib/lol/champion.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'lol/model'
|
2
|
+
|
3
|
+
module Lol
|
4
|
+
class Champion < Lol::Model
|
5
|
+
# @!attribute [r] raw
|
6
|
+
# @return [String] raw version of options Hash used to initialize Champion
|
7
|
+
attr_reader :raw
|
8
|
+
|
9
|
+
# @!attribute [r] id
|
10
|
+
# @return [Fixnum] id of Champion
|
11
|
+
attr_reader :id
|
12
|
+
|
13
|
+
# @!attribute [r] name
|
14
|
+
# @return [String] name of Champion
|
15
|
+
attr_reader :name
|
16
|
+
|
17
|
+
# @!attribute [r] active
|
18
|
+
# @return [true] if the Champion is active
|
19
|
+
# @return [false] if the Champion is disabled
|
20
|
+
attr_reader :active
|
21
|
+
|
22
|
+
# @!attribute [r] attack_rank
|
23
|
+
# @return [Fixnum] attack rank of Champion
|
24
|
+
attr_reader :attack_rank
|
25
|
+
|
26
|
+
# @!attribute [r] defense_rank
|
27
|
+
# @return [Fixnum] defense rank of Champion
|
28
|
+
attr_reader :defense_rank
|
29
|
+
|
30
|
+
# @!attribute [r] magic_rank
|
31
|
+
# @return [Fixnum] magic rank of Champion
|
32
|
+
attr_reader :magic_rank
|
33
|
+
|
34
|
+
# @!attribute [r] difficulty_rank
|
35
|
+
# @return [Fixnum] difficulty rank of Champion
|
36
|
+
attr_reader :difficulty_rank
|
37
|
+
|
38
|
+
# @!attribute [r] bot_enabled
|
39
|
+
# @return [true] if the Champion is enabled in custom bot games
|
40
|
+
# @return [false] if the Champion is disabled in custom bot games
|
41
|
+
attr_reader :bot_enabled
|
42
|
+
|
43
|
+
# @!attribute [r] free_to_play
|
44
|
+
# @return [true] if the Champion is currently free to play
|
45
|
+
# @return [false] if the Champion isn't currently free to play
|
46
|
+
attr_reader :free_to_play
|
47
|
+
|
48
|
+
# @!attribute [r] bot_mm_enabled
|
49
|
+
# @return [true] if the Champion is enabled in match made bot games
|
50
|
+
# @return [false] if the Champion is disabled in match made bot games
|
51
|
+
attr_reader :bot_mm_enabled
|
52
|
+
|
53
|
+
# @!attribute [r] ranked_play_enabled
|
54
|
+
# @return [true] if the Champion is enabled in ranked play
|
55
|
+
# @return [false] if the Champion is disabled in ranked play
|
56
|
+
attr_reader :ranked_play_enabled
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
attr_writer :id, :name, :active, :attack_rank, :defense_rank, :magic_rank,
|
61
|
+
:difficulty_rank, :bot_enabled, :free_to_play, :bot_mm_enabled,
|
62
|
+
:ranked_play_enabled
|
63
|
+
end
|
64
|
+
end
|
data/lib/lol/client.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
module Lol
|
4
|
+
class InvalidAPIResponse < StandardError; end
|
5
|
+
|
6
|
+
class Client
|
7
|
+
include HTTParty
|
8
|
+
|
9
|
+
# @!attribute [rw] region
|
10
|
+
# @return [String] name of region
|
11
|
+
attr_accessor :region
|
12
|
+
|
13
|
+
# @!attribute [r] api_key
|
14
|
+
# @return [String] the API key that has been used
|
15
|
+
attr_reader :api_key
|
16
|
+
|
17
|
+
# Returns a full url for an API call
|
18
|
+
# @param version [String] API version to call
|
19
|
+
# @param path [String] API path to call
|
20
|
+
# @return [String] full fledged url
|
21
|
+
def api_url version, path
|
22
|
+
lol = version == "v1.1" ? "lol" : ""
|
23
|
+
File.join "http://prod.api.pvp.net/api/", lol, "/#{region}/#{version}/", "#{path}?api_key=#{api_key}"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Calls the API via HTTParty and handles errors
|
27
|
+
#
|
28
|
+
def get url
|
29
|
+
response = self.class.get(url)
|
30
|
+
if response["status"]
|
31
|
+
raise InvalidAPIResponse.new(response["status"]["message"])
|
32
|
+
else
|
33
|
+
response
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Calls the latest API version of champion
|
38
|
+
def champion
|
39
|
+
champion11
|
40
|
+
end
|
41
|
+
|
42
|
+
# Retrieve all champions, v1.1
|
43
|
+
# @return [Array] an array of champions
|
44
|
+
def champion11
|
45
|
+
get(api_url("v1.1", "champion"))["champions"].map {|c| Champion.new(c)}
|
46
|
+
end
|
47
|
+
|
48
|
+
# Calls the latest API version of game returning the list of
|
49
|
+
# recent games played by a summoner
|
50
|
+
def game *args
|
51
|
+
game11 *args
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns a list of the recent games played by a summoner
|
55
|
+
# @param summoner_id [Fixnum] Summoner id
|
56
|
+
# @return [Array] an array of games
|
57
|
+
def game11 summoner_id
|
58
|
+
summoner_api_path = "game/by-summoner/#{summoner_id}/recent"
|
59
|
+
get(api_url("v1.1", summoner_api_path))["games"].map do |game_data|
|
60
|
+
Game.new game_data
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Calls the latest API version of league
|
65
|
+
def league summoner_id
|
66
|
+
league21 summoner_id
|
67
|
+
end
|
68
|
+
|
69
|
+
# Retrieves leagues data for summoner, including leagues for all of summoner's teams, v2.1
|
70
|
+
# @return [Array] an array of champions
|
71
|
+
def league21 summoner_id
|
72
|
+
get(api_url("v2.1", "league/by-summoner/#{summoner_id}"))[summoner_id].map {|l| League.new}
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
# Initializes a Lol::Client
|
77
|
+
# @param api_key [String]
|
78
|
+
# @param options [Hash]
|
79
|
+
# @option options [String] :region ("EUW") The region on which the requests will be made
|
80
|
+
# @return [Lol::Client]
|
81
|
+
def initialize api_key, options = {}
|
82
|
+
@api_key = api_key
|
83
|
+
@region = options.delete(:region) || "euw"
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|
data/lib/lol/game.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'lol/model'
|
2
|
+
|
3
|
+
module Lol
|
4
|
+
class Game < Lol::Model
|
5
|
+
# @!attribute [r] raw
|
6
|
+
# @return [Hash] raw version of options Hash used to initialize Game
|
7
|
+
attr_reader :raw
|
8
|
+
|
9
|
+
# @!attribute [r] id
|
10
|
+
# @return [Fixnum] Game Id
|
11
|
+
attr_reader :game_id
|
12
|
+
|
13
|
+
# @!attribute [r] champion_id
|
14
|
+
# @return [Fixnum] Champion Id associated with this game
|
15
|
+
attr_reader :champion_id
|
16
|
+
|
17
|
+
# @!attribute [r] create_date
|
18
|
+
# @return [DateTime] Date game was played
|
19
|
+
attr_reader :create_date
|
20
|
+
|
21
|
+
# @!attribute [r] create_date_str
|
22
|
+
# @return [String] Human readable string representing date game was played
|
23
|
+
attr_reader :create_date_str
|
24
|
+
|
25
|
+
# @!attribute [r] fellow_players
|
26
|
+
# @return [Array] list of players associated with this game
|
27
|
+
attr_reader :fellow_players
|
28
|
+
|
29
|
+
# @!attribute [r] game_mode
|
30
|
+
# @return [String] Game Mode
|
31
|
+
attr_reader :game_mode
|
32
|
+
|
33
|
+
# @!attribute [r] game_type
|
34
|
+
# @return [String] Game Type
|
35
|
+
attr_reader :game_type
|
36
|
+
|
37
|
+
# @!attribute [r] invalid
|
38
|
+
# @return [true] if the game is invalid
|
39
|
+
# @return [false] if the game is valid
|
40
|
+
attr_reader :invalid
|
41
|
+
|
42
|
+
# @!attribute [r] level
|
43
|
+
# @return [Fixnum] Level
|
44
|
+
attr_reader :level
|
45
|
+
|
46
|
+
# @!attribute [r] map_id
|
47
|
+
# @return [Fixnum] Map Id
|
48
|
+
attr_reader :map_id
|
49
|
+
|
50
|
+
# @!attribute [r] spell1
|
51
|
+
# @return [Fixnum] Summoner first spell id
|
52
|
+
attr_reader :spell1
|
53
|
+
|
54
|
+
# @!attribute [r] spell2
|
55
|
+
# @return [Fixnum] Summoner second spell id
|
56
|
+
attr_reader :spell2
|
57
|
+
|
58
|
+
# @!attribute [r] statistics
|
59
|
+
# @return [Array] Statistics associated with the game for this summoner
|
60
|
+
attr_reader :statistics
|
61
|
+
|
62
|
+
# @!attribute [r] sub_type
|
63
|
+
# @return [String] Game sub-type
|
64
|
+
attr_reader :sub_type
|
65
|
+
|
66
|
+
# @!attribute [r] team_id
|
67
|
+
# @return [Fixnum] Team Id associated with game
|
68
|
+
attr_reader :team_id
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
attr_writer :champion_id, :game_id, :game_mode, :game_type, :invalid,
|
73
|
+
:level, :map_id, :spell1, :spell2, :sub_type, :team_id,
|
74
|
+
:create_date_str
|
75
|
+
|
76
|
+
def create_date= value
|
77
|
+
@create_date = value.is_a?(DateTime) && value || DateTime.strptime(value.to_s, '%s')
|
78
|
+
end
|
79
|
+
|
80
|
+
def fellow_players= collection
|
81
|
+
@fellow_players = collection.map do |c|
|
82
|
+
c.respond_to?(:[]) && Player.new(c) || c
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def statistics= collection
|
87
|
+
@statistics = collection.map do |c|
|
88
|
+
c.respond_to?(:[]) && Statistic.new(c) || c
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/lol/league.rb
ADDED
data/lib/lol/model.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
|
3
|
+
module Lol
|
4
|
+
class Model
|
5
|
+
# Initializes a Lol::Model
|
6
|
+
# @param options [Hash]
|
7
|
+
# @return [Lol::Model]
|
8
|
+
def initialize options = {}
|
9
|
+
@raw = options
|
10
|
+
options.each do |attribute_name, value|
|
11
|
+
send "#{attribute_name.to_s.underscore}=", value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/lol/player.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'lol/model'
|
2
|
+
|
3
|
+
module Lol
|
4
|
+
class Player < Lol::Model
|
5
|
+
# @!attribute [r] raw
|
6
|
+
# @return [Hash] raw version of options Hash used to initialize Player
|
7
|
+
attr_reader :raw
|
8
|
+
|
9
|
+
# @!attribute [r] champion_id
|
10
|
+
# @return [Fixnum] Champion Id associated with player
|
11
|
+
attr_reader :champion_id
|
12
|
+
|
13
|
+
# @!attribute [r] summoner_id
|
14
|
+
# @return [Fixnum] Summoner Id associated with player
|
15
|
+
attr_reader :summoner_id
|
16
|
+
|
17
|
+
# @!attribute [r] team_id
|
18
|
+
# @return [Fixnum] Team Id associated with player
|
19
|
+
attr_reader :team_id
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_writer :champion_id, :summoner_id, :team_id
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'lol/model'
|
2
|
+
|
3
|
+
module Lol
|
4
|
+
class Statistic < Lol::Model
|
5
|
+
# @!attribute [r] raw
|
6
|
+
# @return [Hash] raw version of options Hash used to initialize Statistic
|
7
|
+
attr_reader :raw
|
8
|
+
|
9
|
+
# @!attribute [r] id
|
10
|
+
# @return [Fixnum] Raw Statistic Id
|
11
|
+
attr_reader :id
|
12
|
+
|
13
|
+
# @!attribute [r] name
|
14
|
+
# @return [String] Raw Statistic name
|
15
|
+
attr_reader :name
|
16
|
+
|
17
|
+
# @!attribute [r] value
|
18
|
+
# @return [Fixnum] Raw Statistic value
|
19
|
+
attr_reader :value
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_writer :id, :name, :value
|
24
|
+
end
|
25
|
+
end
|