riot_api 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/CHANGELOG.md +5 -0
- data/README.md +3 -2
- data/lib/riot_api/api.rb +5 -3
- data/lib/riot_api/middleware/custom_logger.rb +70 -0
- data/lib/riot_api/model.rb +8 -0
- data/lib/riot_api/model/champion.rb +17 -0
- data/lib/riot_api/model/champion_stat.rb +13 -0
- data/lib/riot_api/model/game.rb +22 -0
- data/lib/riot_api/model/league.rb +13 -0
- data/lib/riot_api/model/league_entry.rb +21 -0
- data/lib/riot_api/model/mastery_page.rb +11 -0
- data/lib/riot_api/model/match.rb +17 -0
- data/lib/riot_api/model/member.rb +10 -0
- data/lib/riot_api/model/player.rb +9 -0
- data/lib/riot_api/model/player_stat_summary.rb +12 -0
- data/lib/riot_api/model/roster.rb +10 -0
- data/lib/riot_api/model/rune.rb +10 -0
- data/lib/riot_api/model/rune_page.rb +12 -0
- data/lib/riot_api/model/rune_slot.rb +10 -0
- data/lib/riot_api/model/statistic.rb +12 -0
- data/lib/riot_api/model/talent.rb +9 -0
- data/lib/riot_api/model/team.rb +26 -0
- data/lib/riot_api/model/team_id.rb +7 -0
- data/lib/riot_api/model/team_stat_detail.rb +13 -0
- data/lib/riot_api/model/team_stat_summary.rb +11 -0
- data/lib/riot_api/resource/base.rb +10 -0
- data/lib/riot_api/resource/champions.rb +4 -2
- data/lib/riot_api/resource/game.rb +8 -2
- data/lib/riot_api/resource/league.rb +6 -2
- data/lib/riot_api/resource/stats.rb +15 -3
- data/lib/riot_api/resource/summoner.rb +23 -7
- data/lib/riot_api/resource/team.rb +8 -2
- data/lib/riot_api/version.rb +1 -1
- data/spec/api_spec.rb +111 -54
- data/spec/model/champion_spec.rb +14 -0
- data/spec/model/champion_stat_spec.rb +18 -0
- data/spec/model/game_spec.rb +18 -0
- data/spec/model/league_entry_spec.rb +13 -0
- data/spec/model/league_spec.rb +17 -0
- data/spec/model/mastery_page_spec.rb +16 -0
- data/spec/model/match_spec.rb +13 -0
- data/spec/model/member_spec.rb +13 -0
- data/spec/model/player_stat_summary_spec.rb +20 -0
- data/spec/model/roster_spec.rb +15 -0
- data/spec/model/rune_page_spec.rb +16 -0
- data/spec/model/rune_slot_spec.rb +15 -0
- data/spec/model/rune_spec.rb +17 -0
- data/spec/model/statistic_spec.rb +17 -0
- data/spec/model/talent_spec.rb +16 -0
- data/spec/model/team_id_spec.rb +13 -0
- data/spec/model/team_spec.rb +44 -0
- data/spec/model/team_stat_detail_spec.rb +20 -0
- data/spec/model/team_stat_summary_stat.rb +27 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/vcr/cassettes/RiotApi_API/_league/_by_summoner/{should_return_leagues_data_for_summoner.yml → should_return_league_object_for_summoner.yml} +0 -0
- data/spec/vcr/cassettes/RiotApi_API/_new/should_output_to_stdout_with_debug_parameter.yml +41 -0
- data/spec/vcr/cassettes/RiotApi_API/_new/should_raise_an_error_if_the_raise_error_status_flag_is_enabled.yml +55 -0
- data/spec/vcr/cassettes/RiotApi_API/_summoner/_id/should_return_information_from_the_summoner_id.yml +9 -15
- data/spec/vcr/cassettes/RiotApi_API/_summoner/_name/should_return_information_from_the_summoner_name.yml +9 -15
- metadata +72 -43
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7214fe007e576b2c2b1a9ba783eac5724e604fba
|
4
|
+
data.tar.gz: e2f652f3fcfc5baeaef9bfb7f1f3d2c00db9b4d8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4801b1605ee7139ae8f732c952a9f0f2b91c30f31b3adb0e3379c990944877930b6cd1929b5d370500dee2de9bb10a2e4c61c8a4c4ddbd741d97cf87c00448f0
|
7
|
+
data.tar.gz: 0c73679b3532e020cab9c1a6e2fd2b6fa56c0cfd3ec8672b4c04956221be26750fd398c7e1efb128d3a7ac42efe43cce2f65a9a37bd2e9eb8a1f094439448f20
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.1.0
|
2
|
+
* Virtus models implemented for all end-points
|
3
|
+
* Added custom log class for debug, which redacts API keys
|
4
|
+
* Fix @raise_status_errors bug, will now raise error before trying to parse it as JSON
|
5
|
+
|
1
6
|
## 0.0.4
|
2
7
|
* Yanked 0.0.3 release as Team method not implemented
|
3
8
|
* Fixed team method
|
data/README.md
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/riot_api.png)](http://badge.fury.io/rb/riot_api)
|
4
4
|
[![Coverage Status](https://coveralls.io/repos/petems/riot_api/badge.png)](https://coveralls.io/r/petems/riot_api)
|
5
5
|
[![Build Status](https://travis-ci.org/petems/riot_api.png?branch=master)](https://travis-ci.org/petems/riot_api)
|
6
|
+
[![Dependency Status](https://gemnasium.com/petems/riot_api.png)](https://gemnasium.com/petems/riot_api)
|
6
7
|
|
7
8
|
A Ruby wrapper around connecting to the [Riot API](https://developer.riotgames.com)
|
8
9
|
|
@@ -109,7 +110,7 @@ rspec
|
|
109
110
|
|
110
111
|
### Contributors
|
111
112
|
|
112
|
-
* [pcg79](https://github.com/pcg79)
|
113
|
+
* [@pcg79](https://github.com/pcg79)
|
113
114
|
|
114
115
|
For more information and a complete list see [the contributor page on GitHub](https://github.com/petems/riot_api/contributors).
|
115
116
|
|
@@ -119,5 +120,5 @@ For more information and a complete list see [the contributor page on GitHub](ht
|
|
119
120
|
|
120
121
|
## Thanks
|
121
122
|
|
122
|
-
* @rmoriz - For the excellent [digital_ocean](https://github.com/rmoriz/digital_ocean) gem, which I used as a framework to setup this gem! :+1:
|
123
|
+
* [@rmoriz](https://github.com/rmoriz) - For the excellent [digital_ocean](https://github.com/rmoriz/digital_ocean) gem, which I used as a framework to setup this gem! :+1:
|
123
124
|
|
data/lib/riot_api/api.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require File.expand_path('../middleware/custom_logger', __FILE__)
|
2
|
+
|
1
3
|
module RiotApi
|
2
4
|
class API
|
3
5
|
|
@@ -22,7 +24,7 @@ module RiotApi
|
|
22
24
|
@ssl = params[:ssl] || { :verify => true }
|
23
25
|
@base_url = params[:base_url] || "http://prod.api.pvp.net/api/"
|
24
26
|
@faraday_adapter = params[:faraday_adapter] || Faraday.default_adapter
|
25
|
-
@raise_status_errors = params[:raise_status_errors] ||
|
27
|
+
@raise_status_errors = params[:raise_status_errors] || true
|
26
28
|
@faraday = params[:faraday] || default_faraday
|
27
29
|
raise ArgumentError, ':api_key missing' unless @api_key
|
28
30
|
raise ArgumentError, ':region missing' unless @region
|
@@ -55,11 +57,11 @@ module RiotApi
|
|
55
57
|
|
56
58
|
def default_faraday
|
57
59
|
Faraday.new(:url => @base_url, :ssl => @ssl) do |faraday|
|
58
|
-
faraday.use
|
60
|
+
faraday.use CustomLogger if @debug
|
59
61
|
faraday.request :url_encoded
|
60
62
|
faraday.response :rashify
|
61
63
|
faraday.response :json
|
62
|
-
faraday.
|
64
|
+
faraday.use Faraday::Response::RaiseError if @raise_status_errors
|
63
65
|
faraday.adapter @faraday_adapter
|
64
66
|
faraday.params['api_key'] = @api_key
|
65
67
|
faraday.headers['User-Agent'] = "riot_api rubygem v#{RiotApi::VERSION}"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module RiotApi
|
2
|
+
class CustomLogger < Faraday::Middleware
|
3
|
+
extend Forwardable
|
4
|
+
def_delegators :@logger, :debug, :info, :warn, :error, :fatal
|
5
|
+
|
6
|
+
def initialize(app, options = {})
|
7
|
+
@app = app
|
8
|
+
@logger = options.fetch(:logger) {
|
9
|
+
require 'logger'
|
10
|
+
::Logger.new($stdout)
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
start_time = Time.now
|
16
|
+
info { request_info(env) }
|
17
|
+
debug { request_debug(env) }
|
18
|
+
@app.call(env).on_complete do
|
19
|
+
end_time = Time.now
|
20
|
+
response_time = end_time - start_time
|
21
|
+
info { response_info(env, response_time) }
|
22
|
+
debug { response_debug(env) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def filter(output)
|
29
|
+
unless ENV['DEBUG'] == '2'
|
30
|
+
output = output.to_s.gsub(/api_key=[a-zA-Z0-9-]*/,'api_key=[API-KEY]')
|
31
|
+
else
|
32
|
+
output
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def request_info(env)
|
37
|
+
"Started %s request to: %s" % [ env[:method].to_s.upcase, filter(env[:url]) ]
|
38
|
+
end
|
39
|
+
|
40
|
+
def response_info(env, response_time)
|
41
|
+
"Response from %s; Status: %d; Time: %.1fms" % [ filter(env[:url]), env[:status], (response_time * 1_000.0) ]
|
42
|
+
end
|
43
|
+
|
44
|
+
def request_debug(env)
|
45
|
+
debug_message("Request", env[:request_headers], env[:body])
|
46
|
+
end
|
47
|
+
|
48
|
+
def response_debug(env)
|
49
|
+
debug_message("Response", env[:response_headers], env[:body])
|
50
|
+
end
|
51
|
+
|
52
|
+
def debug_message(name, headers, body)
|
53
|
+
<<-MESSAGE.gsub(/^ +([^ ])/m, '\\1')
|
54
|
+
#{name} Headers:
|
55
|
+
----------------
|
56
|
+
#{format_headers(headers)}
|
57
|
+
|
58
|
+
#{name} Body:
|
59
|
+
-------------
|
60
|
+
#{body}
|
61
|
+
MESSAGE
|
62
|
+
end
|
63
|
+
|
64
|
+
def format_headers(headers)
|
65
|
+
length = headers.map {|k,v| k.to_s.size }.max
|
66
|
+
headers.map { |name, value| "#{name.to_s.ljust(length)} : #{filter(value)}" }.join("\n")
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
data/lib/riot_api/model.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
require 'riot_api/model/base'
|
2
|
+
require 'riot_api/model/champion'
|
3
|
+
require 'riot_api/model/champion_stat'
|
4
|
+
require 'riot_api/model/game'
|
5
|
+
require 'riot_api/model/league'
|
6
|
+
require 'riot_api/model/mastery_page'
|
7
|
+
require 'riot_api/model/player_stat_summary'
|
8
|
+
require 'riot_api/model/rune_page'
|
2
9
|
require 'riot_api/model/summoner'
|
10
|
+
require 'riot_api/model/team'
|
3
11
|
|
4
12
|
module RiotApi
|
5
13
|
module Model
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RiotApi
|
2
|
+
module Model
|
3
|
+
class Champion < Base
|
4
|
+
attribute :id, Integer
|
5
|
+
attribute :name, String
|
6
|
+
attribute :active, Boolean
|
7
|
+
attribute :attack_rank, Integer
|
8
|
+
attribute :bot_enabled, Boolean
|
9
|
+
attribute :bot_mm_enabled, Boolean
|
10
|
+
attribute :defense_rank, Integer
|
11
|
+
attribute :difficulty_rank, Integer
|
12
|
+
attribute :free_to_play, Boolean
|
13
|
+
attribute :magic_rank, Integer
|
14
|
+
attribute :ranked_play_enabled, Boolean
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'riot_api/model/player'
|
2
|
+
require 'riot_api/model/statistic'
|
3
|
+
|
4
|
+
module RiotApi
|
5
|
+
module Model
|
6
|
+
class Game < Base
|
7
|
+
attribute :champion_id, Integer
|
8
|
+
attribute :create_date, String
|
9
|
+
attribute :create_date_str, String
|
10
|
+
attribute :fellow_players, Array[RiotApi::Model::Player]
|
11
|
+
attribute :game_id, Integer
|
12
|
+
attribute :game_mode, String
|
13
|
+
attribute :level, Integer
|
14
|
+
attribute :map_id, Integer
|
15
|
+
attribute :spell1, Integer
|
16
|
+
attribute :spell2, Integer
|
17
|
+
attribute :statistics, Array[RiotApi::Model::Statistic]
|
18
|
+
attribute :sub_type, String
|
19
|
+
attribute :team_id, Integer
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'riot_api/model/league_entry'
|
2
|
+
|
3
|
+
module RiotApi
|
4
|
+
module Model
|
5
|
+
class League < Base
|
6
|
+
attribute :timestamp, Integer
|
7
|
+
attribute :name, String
|
8
|
+
attribute :tier, String
|
9
|
+
attribute :queue, String
|
10
|
+
attribute :entries, Array[RiotApi::Model::LeagueEntry]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RiotApi
|
2
|
+
module Model
|
3
|
+
class LeagueEntry < Base
|
4
|
+
attribute :is_fresh_blood, Boolean
|
5
|
+
attribute :is_hot_streak, Boolean
|
6
|
+
attribute :is_inactive, Boolean
|
7
|
+
attribute :is_veteran, Boolean
|
8
|
+
attribute :last_played, Integer
|
9
|
+
attribute :league_name, String
|
10
|
+
attribute :league_points, Integer
|
11
|
+
attribute :losses, Integer
|
12
|
+
attribute :player_or_team_id, String
|
13
|
+
attribute :player_or_team_name, String
|
14
|
+
attribute :queue_type, String
|
15
|
+
attribute :rank, String
|
16
|
+
attribute :tier, String
|
17
|
+
attribute :time_until_decay, Integer
|
18
|
+
attribute :wins, Integer
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RiotApi
|
2
|
+
module Model
|
3
|
+
class Match < Base
|
4
|
+
attribute :assists, Integer
|
5
|
+
attribute :date, Integer
|
6
|
+
attribute :deaths, Integer
|
7
|
+
attribute :game_id, Integer
|
8
|
+
attribute :game_mode, String
|
9
|
+
attribute :invalid, Boolean
|
10
|
+
attribute :kills, Integer
|
11
|
+
attribute :map_id, Integer
|
12
|
+
attribute :opposing_team_kills, Integer
|
13
|
+
attribute :opposing_team_name, String
|
14
|
+
attribute :win, Boolean
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module RiotApi
|
2
|
+
module Model
|
3
|
+
class PlayerStatSummary < Base
|
4
|
+
attribute :aggregated_stats, Array[RiotApi::Model::Statistic]
|
5
|
+
attribute :losses, Integer
|
6
|
+
attribute :modify_date, Integer
|
7
|
+
attribute :modify_date_str, String
|
8
|
+
attribute :player_stat_summary_type, String
|
9
|
+
attribute :wins, Integer
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'riot_api/model/match'
|
2
|
+
require 'riot_api/model/roster'
|
3
|
+
require 'riot_api/model/team_id'
|
4
|
+
require 'riot_api/model/team_stat_summary'
|
5
|
+
|
6
|
+
module RiotApi
|
7
|
+
module Model
|
8
|
+
class Team < Base
|
9
|
+
attribute :create_date, Integer
|
10
|
+
attribute :last_game_date, Integer
|
11
|
+
attribute :last_join_date, Integer
|
12
|
+
attribute :last_joined_ranked_team_queue_date, Integer
|
13
|
+
attribute :match_history, Array[RiotApi::Model::Match]
|
14
|
+
attribute :modify_date, Integer
|
15
|
+
attribute :name, String
|
16
|
+
attribute :roster, RiotApi::Model::Roster
|
17
|
+
attribute :second_last_join_date, Integer
|
18
|
+
attribute :status, String
|
19
|
+
attribute :tag, String
|
20
|
+
attribute :team_id, RiotApi::Model::TeamId
|
21
|
+
attribute :team_stat_summary, RiotApi::Model::TeamStatSummary
|
22
|
+
attribute :third_last_join_date, Integer
|
23
|
+
attribute :timestamp, Integer
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'riot_api/model/team_id'
|
2
|
+
|
3
|
+
module RiotApi
|
4
|
+
module Model
|
5
|
+
class TeamStatDetail < Base
|
6
|
+
attribute :average_games_played, Integer
|
7
|
+
attribute :losses, Integer
|
8
|
+
attribute :team_id, RiotApi::Model::TeamId
|
9
|
+
attribute :team_stat_type, String
|
10
|
+
attribute :wins, Integer
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|