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.
@@ -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