RitoPlz 1.0.0
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/.gitignore +10 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +21 -0
- data/README.md +82 -0
- data/Rakefile +6 -0
- data/RitoPlz.gemspec +26 -0
- data/bin/console +10 -0
- data/bin/setup +7 -0
- data/lib/RitoPlz.rb +41 -0
- data/lib/RitoPlz/API/README.md +75 -0
- data/lib/RitoPlz/API/base.rb +11 -0
- data/lib/RitoPlz/API/champion.rb +28 -0
- data/lib/RitoPlz/API/champion_mastery.rb +43 -0
- data/lib/RitoPlz/API/current_game.rb +27 -0
- data/lib/RitoPlz/API/exceptions.rb +123 -0
- data/lib/RitoPlz/API/featured_games.rb +23 -0
- data/lib/RitoPlz/API/game.rb +23 -0
- data/lib/RitoPlz/API/league.rb +54 -0
- data/lib/RitoPlz/API/match.rb +23 -0
- data/lib/RitoPlz/API/match_list.rb +23 -0
- data/lib/RitoPlz/API/request.rb +100 -0
- data/lib/RitoPlz/API/static_data.rb +93 -0
- data/lib/RitoPlz/API/stats.rb +29 -0
- data/lib/RitoPlz/API/status.rb +28 -0
- data/lib/RitoPlz/API/summoner.rb +48 -0
- data/lib/RitoPlz/API/team.rb +30 -0
- data/lib/RitoPlz/API/tournament.rb +51 -0
- data/lib/RitoPlz/client.rb +78 -0
- data/lib/RitoPlz/configuration.rb +10 -0
- data/lib/RitoPlz/version.rb +3 -0
- data/riot.txt +1 -0
- metadata +136 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class FeaturedGames < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def all
|
|
12
|
+
request = Request.new(@region, api_path)
|
|
13
|
+
request.get
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def api_path
|
|
19
|
+
"/observer-mode/rest/featured"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class Game < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def by_player_id(player_id)
|
|
12
|
+
request = Request.new(@region, api_path("/#{player_id}/recent"))
|
|
13
|
+
request.get
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def api_path(additional_path = "")
|
|
19
|
+
"/api/lol/#{@region}/v1.3/game/by-summoner" + additional_path
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class League < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def by_player_ids(*ids)
|
|
12
|
+
ids_string = ids.join(',')
|
|
13
|
+
request = Request.new(@region, api_path("/by-summoner/#{ids_string}"))
|
|
14
|
+
request.get
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def entries_by_player_ids(*ids)
|
|
18
|
+
ids_string = ids.join(',')
|
|
19
|
+
request = Request.new(@region, api_path("/by-summoner/#{ids_string}/entry"))
|
|
20
|
+
request.get
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def by_team_ids(*ids)
|
|
24
|
+
ids_string = ids.join(',')
|
|
25
|
+
request = Request.new(@region, api_path("/by-team/#{ids_string}"))
|
|
26
|
+
request.get
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def entries_by_team_ids(*ids)
|
|
30
|
+
ids_string = ids.join(',')
|
|
31
|
+
request = Request.new(@region, api_path("/by-team/#{ids_string}/entry"))
|
|
32
|
+
request.get
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def challenger(type = :RANKED_SOLO_5x5)
|
|
36
|
+
query_params = { type: type }
|
|
37
|
+
request = Request.new(@region, api_path("/challenger"))
|
|
38
|
+
request.get(query_params)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def master(type = :RANKED_SOLO_5x5)
|
|
42
|
+
query_params = { type: type }
|
|
43
|
+
request = Request.new(@region, api_path("/master"))
|
|
44
|
+
request.get(query_params)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
protected
|
|
48
|
+
|
|
49
|
+
def api_path(additional_path = "")
|
|
50
|
+
"/api/lol/#{@region}/v2.5/league" + additional_path
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class Match < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def by_id(id, query_params = {})
|
|
12
|
+
request = Request.new(@region, api_path("/#{id}"))
|
|
13
|
+
request.get(query_params)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def api_path(additional_path = "")
|
|
19
|
+
"/api/lol/#{@region}/v2.2/match" + additional_path
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class MatchList < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def by_player_id(player_id, query_params = {})
|
|
12
|
+
request = Request.new(@region, api_path("/#{player_id}"))
|
|
13
|
+
request.get(query_params)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def api_path(additional_path = "")
|
|
19
|
+
"/api/lol/#{@region}/v2.2/matchlist/by-summoner" + additional_path
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'json'
|
|
3
|
+
require 'RitoPlz/API/exceptions'
|
|
4
|
+
|
|
5
|
+
module RitoPlz
|
|
6
|
+
module API
|
|
7
|
+
class Request
|
|
8
|
+
attr_reader :path, :region
|
|
9
|
+
|
|
10
|
+
#Use application configuration or use custom configuration
|
|
11
|
+
def initialize(region, path, params = {})
|
|
12
|
+
@path = path
|
|
13
|
+
@region = region
|
|
14
|
+
@type = params[:type] || :api
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get(query_params = {})
|
|
18
|
+
uri = URI(request_url(query_params))
|
|
19
|
+
response = Net::HTTP.get_response(uri)
|
|
20
|
+
verify_response!(response)
|
|
21
|
+
return response
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def post(params, query_params = {})
|
|
25
|
+
uri = URI(request_url(query_params))
|
|
26
|
+
req = Net::HTTP::Post.new(uri)
|
|
27
|
+
req.body = params.to_json
|
|
28
|
+
req['content-type'] = "application/json"
|
|
29
|
+
|
|
30
|
+
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
|
31
|
+
http.request(req)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
verify_response!(response)
|
|
35
|
+
return response
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def put(params, query_params = {})
|
|
39
|
+
uri = URI(request_url(query_params))
|
|
40
|
+
req = Net::HTTP::Put.new(uri)
|
|
41
|
+
req.body = params.to_json
|
|
42
|
+
req['content-type'] = "application/json"
|
|
43
|
+
|
|
44
|
+
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
|
45
|
+
http.request(req)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
verify_response!(response)
|
|
49
|
+
return response
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def request_url(query_params = {})
|
|
55
|
+
query_params[:api_key] = RitoPlz.configuration.api_key
|
|
56
|
+
|
|
57
|
+
case @type
|
|
58
|
+
when :status
|
|
59
|
+
base_url = "https://status.leagueoflegends.com"
|
|
60
|
+
else
|
|
61
|
+
base_url = "https://#{region}.api.pvp.net"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
final_params = format_params(query_params)
|
|
65
|
+
|
|
66
|
+
base_url + path + "?#{URI.encode_www_form(final_params)}"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def format_params(query_params)
|
|
70
|
+
query_params.each do |key, value|
|
|
71
|
+
if value.is_a?(Array)
|
|
72
|
+
query_params[key] = value.join(',')
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
query_params
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def verify_response!(response)
|
|
79
|
+
case response.code
|
|
80
|
+
when '400'
|
|
81
|
+
raise BadRequestException
|
|
82
|
+
when '401'
|
|
83
|
+
raise UnauthorizedException
|
|
84
|
+
when '403'
|
|
85
|
+
raise ForbiddenException
|
|
86
|
+
when '404'
|
|
87
|
+
raise NotFoundException
|
|
88
|
+
when '415'
|
|
89
|
+
raise UnsupportedMediaTypeException
|
|
90
|
+
when '429'
|
|
91
|
+
raise RateLimitExceededException
|
|
92
|
+
when '500'
|
|
93
|
+
raise InternalServerException
|
|
94
|
+
when '503'
|
|
95
|
+
raise ServiceUnavailableException
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class StaticData < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def champions(query_params = {})
|
|
12
|
+
request = Request.new(@region, api_path("/champion"))
|
|
13
|
+
request.get(query_params)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def champion_by_id(champion_id, query_params = {})
|
|
17
|
+
request = Request.new(@region, api_path("/champion/#{champion_id}"))
|
|
18
|
+
request.get(query_params)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def items(query_params = {})
|
|
22
|
+
request = Request.new(@region, api_path("/item"))
|
|
23
|
+
request.get(query_params)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def item_by_id(item_id, query_params = {})
|
|
27
|
+
request = Request.new(@region, api_path("/item/#{item_id}"))
|
|
28
|
+
request.get(query_params)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def language_strings(query_params = {})
|
|
32
|
+
request = Request.new(@region, api_path("/language-strings"))
|
|
33
|
+
request.get(query_params)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def languages
|
|
37
|
+
request = Request.new(@region, api_path("/languages"))
|
|
38
|
+
request.get
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def maps(query_params = {})
|
|
42
|
+
request = Request.new(@region, api_path("/map"))
|
|
43
|
+
request.get(query_params)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def masteries(query_params = {})
|
|
47
|
+
request = Request.new(@region, api_path("/mastery"))
|
|
48
|
+
request.get(query_params)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def mastery_by_id(mastery_id, query_params = {})
|
|
52
|
+
request = Request.new(@region, api_path("/mastery/#{mastery_id}"))
|
|
53
|
+
request.get(query_params)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def realm
|
|
57
|
+
request = Request.new(@region, api_path("/realm"))
|
|
58
|
+
request.get
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def runes(query_params = {})
|
|
62
|
+
request = Request.new(@region, api_path("/rune"))
|
|
63
|
+
request.get(query_params)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def rune_by_id(rune_id, query_params = {})
|
|
67
|
+
request = Request.new(@region, api_path("/rune/#{rune_id}"))
|
|
68
|
+
request.get(query_params)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def summoner_spells(query_params = {})
|
|
72
|
+
request = Request.new(@region, api_path("/summoner-spell"))
|
|
73
|
+
request.get(query_params)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def summoner_spell_by_id(ss_id, query_params = {})
|
|
77
|
+
request = Request.new(@region, api_path("/summoner-spell/#{ss_id}"))
|
|
78
|
+
request.get(query_params)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def versions
|
|
82
|
+
request = Request.new(@region, api_path("/versions"))
|
|
83
|
+
request.get
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
protected
|
|
87
|
+
|
|
88
|
+
def api_path(additional_path = "")
|
|
89
|
+
"/api/lol/static-data/#{@region}/v1.2" + additional_path
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class Stats < Base
|
|
7
|
+
def initialize(region, player_id)
|
|
8
|
+
@region = region
|
|
9
|
+
@player_id = player_id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def ranked(query_params = {})
|
|
13
|
+
request = Request.new(@region, api_path("/ranked"))
|
|
14
|
+
request.get(query_params)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def summary(query_params = {})
|
|
18
|
+
request = Request.new(@region, api_path("/summary"))
|
|
19
|
+
request.get(query_params)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
protected
|
|
23
|
+
|
|
24
|
+
def api_path(additional_path = "")
|
|
25
|
+
"/api/lol/#{@region}/v1.3/stats/by-summoner/#{@player_id}" + additional_path
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class Status < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def all
|
|
12
|
+
request = Request.new(@region, api_path, type: :status)
|
|
13
|
+
request.get
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def by_region_code(region_code)
|
|
17
|
+
request = Request.new(@region, api_path("/#{region_code}"), type: :status)
|
|
18
|
+
request.get
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
protected
|
|
22
|
+
|
|
23
|
+
def api_path(additional_path = "")
|
|
24
|
+
"/shards" + additional_path
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'RitoPlz/API/base'
|
|
2
|
+
require 'RitoPlz/API/request'
|
|
3
|
+
|
|
4
|
+
module RitoPlz
|
|
5
|
+
module API
|
|
6
|
+
class Summoner < Base
|
|
7
|
+
def initialize(region)
|
|
8
|
+
@region = region
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def by_names(*names)
|
|
12
|
+
names_string = names.join(',')
|
|
13
|
+
request = Request.new(@region, api_path("/by-name/#{names_string}"))
|
|
14
|
+
request.get
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def by_ids(*ids)
|
|
18
|
+
ids_string = ids.join(',')
|
|
19
|
+
request = Request.new(@region, api_path("/#{ids_string}"))
|
|
20
|
+
request.get
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def masteries_by_player_ids(*ids)
|
|
24
|
+
ids_string = ids.join(',')
|
|
25
|
+
request = Request.new(@region, api_path("/#{ids_string}/masteries"))
|
|
26
|
+
request.get
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def names_by_player_ids(*ids)
|
|
30
|
+
ids_string = ids.join(',')
|
|
31
|
+
request = Request.new(@region, api_path("/#{ids_string}/name"))
|
|
32
|
+
request.get
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def runes_by_player_ids(*ids)
|
|
36
|
+
ids_string = ids.join(',')
|
|
37
|
+
request = Request.new(@region, api_path("/#{ids_string}/runes"))
|
|
38
|
+
request.get
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
protected
|
|
42
|
+
|
|
43
|
+
def api_path(additional_path = "")
|
|
44
|
+
"/api/lol/#{@region}/v1.4/summoner" + additional_path
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|