league_of_legends 0.0.2 → 0.0.3
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 +4 -4
- data/README.md +10 -5
- data/league_of_legends.gemspec +1 -0
- data/lib/league_of_legends/api.rb +58 -4
- data/lib/league_of_legends/request/all.rb +3 -0
- data/lib/league_of_legends/request/base.rb +15 -14
- data/lib/league_of_legends/request/mapper.rb +37 -0
- data/lib/league_of_legends/request/stats/by_summoner/summary.rb +4 -4
- data/lib/league_of_legends/version.rb +1 -1
- data/spec/league_of_legends/api_spec.rb +16 -4
- data/spec/league_of_legends/request/base_spec.rb +6 -4
- data/spec/league_of_legends/request/mapper_spec.rb +10 -0
- data/spec/league_of_legends/request/stats/by_summoner/summary_spec.rb +7 -4
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88d301f5ac4bd1cbfce2d325c27fc7b812e9c6fc
|
4
|
+
data.tar.gz: 95bc9470c025d4d4c878b07d3094504fd1354f03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20670ef360d1c4bc57658e49234f2d2c99f3ed832ac42cc47e2a3cc5445aef0f5c6645f3088f7e0c3b4d2c6ad2dadab560d08ccccfe0846161c7e92c04f5b4db
|
7
|
+
data.tar.gz: 26b7b4a92f6eb33ce2f7fe4383d536287ade407ced096cedfa78ba58e2130f022c35aafeee9cf3223133f0b3eafafd9e8916b3539c10af10f4ff18bca76be130
|
data/README.md
CHANGED
@@ -20,14 +20,19 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
The gem is still
|
23
|
+
The gem is still a work in progress and has limited functionality.
|
24
24
|
|
25
|
-
|
25
|
+
# create a new instance of the API
|
26
|
+
lol_api = ::LeagueOfLegends::Api.new <api key>
|
26
27
|
|
27
|
-
|
28
|
+
# get all available request types
|
29
|
+
lol_api.available_request
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
+
# execute a request
|
32
|
+
result_dto = lol_api.get(:summoner_stats_summary, <summoner id>)
|
33
|
+
|
34
|
+
|
35
|
+
In this example, the DTO returned is a `::LeagueOfLegends::DTO::PlayerStatsSummaryList`.
|
31
36
|
|
32
37
|
You can read about each Request and DTO at http://developer.riotgames.com/api/methods
|
33
38
|
|
data/league_of_legends.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["francisco.orvalho@gmail.com"]
|
11
11
|
spec.summary = %q{Implementation of the LoL API}
|
12
12
|
spec.description = %q{This gem implements the League Of Legends API (currently in open beta). It will continue to be updated as the API evolves.
|
13
|
+
Please see the README at https://github.com/forvalho/league_of_legends/blob/master/README.md
|
13
14
|
|
14
15
|
This product is not endorsed, certified or otherwise approved in any way by Riot Games, Inc. or any of its affiliates.}
|
15
16
|
spec.homepage = "http://github.com/forvalho/league_of_legends"
|
@@ -1,12 +1,66 @@
|
|
1
|
+
require 'league_of_legends/request/all'
|
2
|
+
|
1
3
|
module ::LeagueOfLegends
|
2
4
|
class Api
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
+
attr_reader :key, :base_url
|
7
|
+
|
8
|
+
def initialize options = {}
|
9
|
+
case options
|
10
|
+
when Hash
|
11
|
+
opt = self.class.default_options.merge(options)
|
12
|
+
set_key(opt[:key])
|
13
|
+
set_base_url(opt[:base_url])
|
14
|
+
when String
|
15
|
+
set_key(options)
|
16
|
+
set_base_url(self.class.default_options[:base_url])
|
17
|
+
else
|
18
|
+
raise ArgumentError.new 'expected a Hash or a String'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.default_options
|
23
|
+
{
|
24
|
+
key: nil,
|
25
|
+
base_url: 'https://prod.api.pvp.net/api/lol'
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def get request, *arguments
|
30
|
+
req_class = ::LeagueOfLegends::Request::Mapper.get(request.to_sym)
|
31
|
+
request = req_class.new self, *arguments
|
32
|
+
request.response
|
6
33
|
end
|
7
34
|
|
8
|
-
def
|
9
|
-
|
35
|
+
def available_requests
|
36
|
+
::LeagueOfLegends::Request::Mapper.available
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def set_key key = nil
|
42
|
+
case key
|
43
|
+
when nil
|
44
|
+
raise ArgumentError.new 'wrong number of arguments (0 for 1)'
|
45
|
+
when String
|
46
|
+
if key =~ /^\h{8}(-\h{4}){3}-\h{12}$/
|
47
|
+
@key = key
|
48
|
+
else
|
49
|
+
raise ArgumentError.new 'key with incorrect format'
|
50
|
+
end
|
51
|
+
else
|
52
|
+
raise ArgumentError.new 'expected a String'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def set_base_url base_url
|
57
|
+
require 'uri'
|
58
|
+
|
59
|
+
if base_url =~ /^#{URI::regexp}$/o
|
60
|
+
@base_url = base_url
|
61
|
+
else
|
62
|
+
raise ArgumentError.new 'expected a valid URL'
|
63
|
+
end
|
10
64
|
end
|
11
65
|
|
12
66
|
end
|
@@ -6,9 +6,8 @@ module ::LeagueOfLegends
|
|
6
6
|
class Base
|
7
7
|
require 'net/http'
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
end
|
9
|
+
|
10
|
+
attr_reader :options
|
12
11
|
|
13
12
|
def self.default_options
|
14
13
|
{
|
@@ -25,15 +24,16 @@ module ::LeagueOfLegends
|
|
25
24
|
dto_class.version
|
26
25
|
end
|
27
26
|
|
28
|
-
def
|
27
|
+
def region
|
29
28
|
options[:region]
|
30
29
|
end
|
31
30
|
|
32
|
-
def
|
33
|
-
|
31
|
+
def api_key
|
32
|
+
api.key
|
34
33
|
end
|
35
34
|
|
36
|
-
def initialize options = {}
|
35
|
+
def initialize api, options = {}
|
36
|
+
@api = api
|
37
37
|
@options = self.class.default_options.merge(options)
|
38
38
|
end
|
39
39
|
|
@@ -50,25 +50,26 @@ module ::LeagueOfLegends
|
|
50
50
|
|
51
51
|
protected
|
52
52
|
|
53
|
+
attr_reader :api
|
54
|
+
|
53
55
|
def base_url
|
54
56
|
[
|
55
|
-
|
56
|
-
|
57
|
+
api.base_url,
|
58
|
+
region,
|
57
59
|
self.class.version
|
58
|
-
]
|
60
|
+
]
|
59
61
|
end
|
60
62
|
|
61
63
|
def url_parameters
|
62
64
|
[
|
63
|
-
"
|
64
|
-
]
|
65
|
+
"api_key=#{api_key}"
|
66
|
+
]
|
65
67
|
end
|
66
68
|
|
67
|
-
|
68
69
|
private
|
69
70
|
|
70
71
|
def url
|
71
|
-
base_url
|
72
|
+
"#{base_url.join('/')}?#{url_parameters.join('&')}"
|
72
73
|
end
|
73
74
|
|
74
75
|
def send_request
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module ::LeagueOfLegends
|
2
|
+
module Request
|
3
|
+
class Mapper
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def get request_name
|
8
|
+
get_info(request_name)[:class]
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_info request_name
|
12
|
+
map[request_name.to_sym]
|
13
|
+
end
|
14
|
+
|
15
|
+
def available? request_name
|
16
|
+
map.has_key? request_name
|
17
|
+
end
|
18
|
+
|
19
|
+
def available
|
20
|
+
map.keys
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def map
|
26
|
+
@map ||= {
|
27
|
+
summoner_stats_summary: {
|
28
|
+
class: ::LeagueOfLegends::Request::Stats::BySummoner::Summary,
|
29
|
+
},
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -7,10 +7,10 @@ module ::LeagueOfLegends
|
|
7
7
|
module BySummoner
|
8
8
|
class Summary < ::LeagueOfLegends::Request::Base
|
9
9
|
|
10
|
-
attr_reader :summoner_id
|
10
|
+
attr_reader :summoner_id
|
11
11
|
|
12
|
-
def initialize summoner_id, options = {}
|
13
|
-
super(options)
|
12
|
+
def initialize api, summoner_id, options = {}
|
13
|
+
super(api, options)
|
14
14
|
@summoner_id = summoner_id
|
15
15
|
end
|
16
16
|
|
@@ -21,7 +21,7 @@ module ::LeagueOfLegends
|
|
21
21
|
protected
|
22
22
|
|
23
23
|
def base_url
|
24
|
-
super
|
24
|
+
super << "stats/by-summoner/#{summoner_id}/summary"
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
@@ -2,13 +2,25 @@ require 'league_of_legends/api'
|
|
2
2
|
|
3
3
|
describe ::LeagueOfLegends::Api do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
let(:api) { ::LeagueOfLegends::Api.new '0c78469b-b773-4b35-9f6a-00d7fe964290
|
6
|
+
' }
|
7
|
+
|
8
|
+
it "has access to an API key" do
|
9
|
+
pending "testing with real key"
|
10
|
+
expect(api.key).to eq 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1'
|
8
11
|
end
|
9
12
|
|
10
13
|
it "has a base url" do
|
11
|
-
expect(
|
14
|
+
expect(api.base_url).to eq 'https://prod.api.pvp.net/api/lol'
|
15
|
+
end
|
16
|
+
|
17
|
+
it "can get a list of available requests" do
|
18
|
+
expect(api.available_requests).to be_kind_of Enumerable
|
19
|
+
end
|
20
|
+
|
21
|
+
it "can send requests and receive a response" do
|
22
|
+
pending "requires internet connection"
|
23
|
+
expect(api.get(:summoner_stats_summary, 12345)).to be_an_instance_of ::LeagueOfLegends::DTO::PlayerStatsSummaryList
|
12
24
|
end
|
13
25
|
|
14
26
|
end
|
@@ -2,19 +2,21 @@ require 'league_of_legends/request/base'
|
|
2
2
|
|
3
3
|
describe ::LeagueOfLegends::Request::Base do
|
4
4
|
|
5
|
+
let(:api) { ::LeagueOfLegends::Api.new 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1' }
|
6
|
+
|
5
7
|
it "exposes methods to it's children" do
|
6
8
|
class ReqTest < described_class
|
7
9
|
def self.version; 'xx'; end
|
8
10
|
def self.dto_class; ReqTest; end
|
9
11
|
end
|
10
|
-
req_test = ReqTest.new
|
12
|
+
req_test = ReqTest.new api
|
11
13
|
|
12
|
-
expect(ReqTest.respond_to? :options).to be_true
|
13
14
|
expect(ReqTest.respond_to? :default_options).to be_true
|
14
15
|
expect(ReqTest.respond_to? :dto_class).to be_true
|
15
16
|
expect(ReqTest.respond_to? :version).to be_true
|
16
|
-
expect(
|
17
|
-
expect(
|
17
|
+
expect(req_test.respond_to? :options).to be_true
|
18
|
+
expect(req_test.respond_to? :region).to be_true
|
19
|
+
expect(req_test.respond_to? :api_key).to be_true
|
18
20
|
expect(req_test.respond_to? :response).to be_true
|
19
21
|
|
20
22
|
expect(req_test.respond_to? :url).to be_false
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'league_of_legends/request/mapper'
|
2
|
+
|
3
|
+
describe ::LeagueOfLegends::Request::Mapper do
|
4
|
+
|
5
|
+
it "knows the class for certain requests" do
|
6
|
+
req = described_class.get :summoner_stats_summary
|
7
|
+
expect(req).to eq ::LeagueOfLegends::Request::Stats::BySummoner::Summary
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
@@ -2,19 +2,22 @@ require 'league_of_legends/request/stats/by_summoner/summary'
|
|
2
2
|
|
3
3
|
describe ::LeagueOfLegends::Request::Stats::BySummoner::Summary do
|
4
4
|
|
5
|
-
let(:
|
5
|
+
let(:api) { ::LeagueOfLegends::Api.new 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1' }
|
6
|
+
|
7
|
+
let(:request) { described_class.new api, 50519866 }
|
6
8
|
|
7
9
|
it "has the required parameters" do
|
8
10
|
expect(described_class.dto_class).to eq ::LeagueOfLegends::DTO::PlayerStatsSummaryList
|
9
|
-
expect(described_class.region).to eq 'euw'
|
10
11
|
expect(described_class.version).to eq 'v1.2'
|
11
|
-
expect(
|
12
|
-
expect(
|
12
|
+
expect(request.region).to eq 'euw'
|
13
|
+
expect(request.api_key).to be_an_instance_of String
|
14
|
+
expect(request.api_key.length).to eq 36
|
13
15
|
|
14
16
|
expect(request.summoner_id).to eq 50519866
|
15
17
|
end
|
16
18
|
|
17
19
|
it "can be sent and get a response" do
|
20
|
+
pending "requires internet connection"
|
18
21
|
expect(request.response).to be_an_instance_of ::LeagueOfLegends::DTO::PlayerStatsSummaryList
|
19
22
|
end
|
20
23
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: league_of_legends
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francisco Orvalho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -40,6 +40,7 @@ dependencies:
|
|
40
40
|
version: '0'
|
41
41
|
description: |-
|
42
42
|
This gem implements the League Of Legends API (currently in open beta). It will continue to be updated as the API evolves.
|
43
|
+
Please see the README at https://github.com/forvalho/league_of_legends/blob/master/README.md
|
43
44
|
|
44
45
|
This product is not endorsed, certified or otherwise approved in any way by Riot Games, Inc. or any of its affiliates.
|
45
46
|
email:
|
@@ -62,7 +63,9 @@ files:
|
|
62
63
|
- lib/league_of_legends/dto/champion_list.rb
|
63
64
|
- lib/league_of_legends/dto/player_stats_summary.rb
|
64
65
|
- lib/league_of_legends/dto/player_stats_summary_list.rb
|
66
|
+
- lib/league_of_legends/request/all.rb
|
65
67
|
- lib/league_of_legends/request/base.rb
|
68
|
+
- lib/league_of_legends/request/mapper.rb
|
66
69
|
- lib/league_of_legends/request/stats/by_summoner/summary.rb
|
67
70
|
- lib/league_of_legends/version.rb
|
68
71
|
- spec/league_of_legends/api_spec.rb
|
@@ -73,6 +76,7 @@ files:
|
|
73
76
|
- spec/league_of_legends/dto/player_stats_summary_list_spec.rb
|
74
77
|
- spec/league_of_legends/dto/player_stats_summary_spec.rb
|
75
78
|
- spec/league_of_legends/request/base_spec.rb
|
79
|
+
- spec/league_of_legends/request/mapper_spec.rb
|
76
80
|
- spec/league_of_legends/request/stats/by_summoner/summary_spec.rb
|
77
81
|
homepage: http://github.com/forvalho/league_of_legends
|
78
82
|
licenses:
|
@@ -107,4 +111,6 @@ test_files:
|
|
107
111
|
- spec/league_of_legends/dto/player_stats_summary_list_spec.rb
|
108
112
|
- spec/league_of_legends/dto/player_stats_summary_spec.rb
|
109
113
|
- spec/league_of_legends/request/base_spec.rb
|
114
|
+
- spec/league_of_legends/request/mapper_spec.rb
|
110
115
|
- spec/league_of_legends/request/stats/by_summoner/summary_spec.rb
|
116
|
+
has_rdoc:
|