sightstone 0.1.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/lib/sightstone.rb +32 -0
- data/lib/sightstone/champion.rb +18 -0
- data/lib/sightstone/league.rb +48 -0
- data/lib/sightstone/masterybook.rb +36 -0
- data/lib/sightstone/match_history.rb +51 -0
- data/lib/sightstone/modules/champion_module.rb +47 -0
- data/lib/sightstone/modules/game_module.rb +50 -0
- data/lib/sightstone/modules/league_module.rb +53 -0
- data/lib/sightstone/modules/stats_module.rb +74 -0
- data/lib/sightstone/modules/summoner_module.rb +88 -0
- data/lib/sightstone/modules/team_module.rb +56 -0
- data/lib/sightstone/player_stats_summary.rb +30 -0
- data/lib/sightstone/ranked_stats.rb +40 -0
- data/lib/sightstone/runebook.rb +37 -0
- data/lib/sightstone/stat.rb +13 -0
- data/lib/sightstone/summoner.rb +16 -0
- data/lib/sightstone/team.rb +77 -0
- metadata +88 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 587af5785d237527f2a8e316356ce84b8c39e544
|
4
|
+
data.tar.gz: 3a2cb00c736b6deb110b2f395a0d737e69e689fe
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e1e208bec4e4c1621cab7a4715ce688e49070366186e7a8d08b7d92039e153643f2ddcbb25b79a8777eed6c8961790531f6516a4ecb44fed4f8938e6047f5008
|
7
|
+
data.tar.gz: b4f3c49ea4792c541c5531e576ecc3128b47fd6c7ba19dd7b84f20ad294a002fd011d0f35e565f402f5801043531850795f10b1da80577d0e692abf00dcd98ec
|
data/lib/sightstone.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'JSON'
|
3
|
+
require 'sightstone/modules/champion_module'
|
4
|
+
require 'sightstone/modules/summoner_module'
|
5
|
+
require 'sightstone/modules/game_module'
|
6
|
+
require 'sightstone/modules/league_module'
|
7
|
+
require 'sightstone/modules/stats_module'
|
8
|
+
require 'sightstone/modules/team_module'
|
9
|
+
|
10
|
+
class Sightstone
|
11
|
+
attr_accessor :region, :api_key
|
12
|
+
attr_accessor :summoner, :champion, :game, :league, :stats, :team
|
13
|
+
|
14
|
+
def initialize(api_key, region)
|
15
|
+
@api_key = api_key
|
16
|
+
@region = region
|
17
|
+
|
18
|
+
@summoner = SummonerModule.new(self)
|
19
|
+
@champion = ChampionModule.new(self)
|
20
|
+
@game = GameModule.new(self)
|
21
|
+
@league = LeagueModule.new(self)
|
22
|
+
@stats = StatsModule.new(self)
|
23
|
+
@team = TeamModule.new(self)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Error classes
|
28
|
+
class SightstoneApiException < Exception; end
|
29
|
+
|
30
|
+
class SummonerNotFoundException < SightstoneApiException; end
|
31
|
+
|
32
|
+
class SightstoneConnectionException < SightstoneApiException; end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Champion
|
2
|
+
attr_accessor :active, :attackRank, :botEnabled, :botMmEnabled
|
3
|
+
attr_accessor :defenseRank, :difficultyRank, :freeToPlay, :id, :magicRank, :name, :rankedPlayEnabled
|
4
|
+
|
5
|
+
def initialize(data)
|
6
|
+
@active = data['active']
|
7
|
+
@attackRank = data['attackRank']
|
8
|
+
@botEnabled = data['botEnabled']
|
9
|
+
@defenseRank = data['defenseRank']
|
10
|
+
@difficultyRank = data['difficultyRank']
|
11
|
+
@freeToPlay = data['freeToPlay']
|
12
|
+
@id = data['id']
|
13
|
+
@magicRank = data['magicRank']
|
14
|
+
@name = data['name']
|
15
|
+
@rankedPlayEnabled = data['rankedPlayEnabled']
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class League
|
2
|
+
attr_accessor :entries, :name, :queue, :tier, :timestamp
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@name = data['name']
|
6
|
+
@queue = data['queue']
|
7
|
+
@tier = data['tier']
|
8
|
+
@timestamp = data['timestamp']
|
9
|
+
@entries = []
|
10
|
+
data['entries'].each do |entry|
|
11
|
+
@entries << LeagueItem.new(entry)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class LeagueItem
|
17
|
+
attr_accessor :isFreshBlood, :isHotStreak, :isActive, :isVeteran, :lastPlayed, :leagueName, :leaguePoints, :losses, :miniSeries, :playerOrTeamId, :playerOrTeamName, :queueType, :rank, :tier, :timeUntilDecay, :wins
|
18
|
+
|
19
|
+
def initialize(data)
|
20
|
+
@isFreshBlood=data['isFreshBlood']
|
21
|
+
@isHotStreak=data['isHotStreak']
|
22
|
+
@isActive=data['isActive']
|
23
|
+
@isVeteran=data['isVeteran']
|
24
|
+
@lastPlayed=data['lastPlayed']
|
25
|
+
@leagueName=data['leageuName']
|
26
|
+
@leaguePoints=data['leaguePoints']
|
27
|
+
@losses=data['losses']
|
28
|
+
@miniSeries= MiniSeries.new(data['miniSeries']) if data.has_key? 'miniSeries'
|
29
|
+
@playerOrTeamId=data['playerOrTeamId']
|
30
|
+
@playerOrTeamName=data['playerOrTeamName']
|
31
|
+
@queueType=data['queueType']
|
32
|
+
@rank=data['rank']
|
33
|
+
@tier=data['tier']
|
34
|
+
@timeUntilDecay=data['timeUntilDecay']
|
35
|
+
@wins=data['wins']
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class MiniSeries
|
40
|
+
attr_accessor :losses, :wins, :target, :progress, :timeLeftToPlayMillis
|
41
|
+
def initialize(data)
|
42
|
+
@losses = data['losses']
|
43
|
+
@wins = data['wins']
|
44
|
+
@target = data['target']
|
45
|
+
@progress = data['progress']
|
46
|
+
@timeLeftToPlayMillis = data['timeLeftToPlayMillies']
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class MasteryBook
|
2
|
+
attr_accessor :pages, :summonerId
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@summonerId = data['summonerId']
|
6
|
+
@pages = []
|
7
|
+
data['pages'].each do |page|
|
8
|
+
@pages << MasteryPage.new(page)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class MasteryPage
|
14
|
+
attr_accessor :id, :talents, :name, :current
|
15
|
+
|
16
|
+
def initialize(data)
|
17
|
+
@id = data['id']
|
18
|
+
@name = data['name']
|
19
|
+
@current = data['current']
|
20
|
+
@talents = []
|
21
|
+
data['talents'].each do |talent|
|
22
|
+
@talents << Talent.new(talent)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
class Talent
|
29
|
+
attr_accessor :id,:rank, :name
|
30
|
+
|
31
|
+
def initialize(data)
|
32
|
+
@id = data['id']
|
33
|
+
@name = data['name']
|
34
|
+
@rank = data['rank']
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'sightstone/stat'
|
2
|
+
|
3
|
+
class MatchHistory
|
4
|
+
attr_accessor :games, :summonerId
|
5
|
+
|
6
|
+
def initialize(data)
|
7
|
+
@summonerId = data['summonerId']
|
8
|
+
@games = []
|
9
|
+
data['games'].each do |game|
|
10
|
+
games << Game.new(game)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Game
|
16
|
+
attr_accessor :championId, :createDate, :createDateString, :fellowPlayers, :gameId, :gameMode, :gameType, :invalid, :level, :mapId, :spell1, :spell2, :statistics, :subType, :teamId
|
17
|
+
|
18
|
+
def initialize(data)
|
19
|
+
@championId=data['championId']
|
20
|
+
@createDate=data['createDate']
|
21
|
+
@createDateString=data['createDateString']
|
22
|
+
@fellowPlayers=[]
|
23
|
+
data['fellowPlayers'].each do |player|
|
24
|
+
@fellowPlayers << Player.new(player)
|
25
|
+
end
|
26
|
+
@gameId=data['gameId']
|
27
|
+
@gameMode=data['gameMode']
|
28
|
+
@gameType=data['gameType']
|
29
|
+
@invalid=data['invalid']
|
30
|
+
@level=data['level']
|
31
|
+
@mapId=data['mapId']
|
32
|
+
@spell1=data['spell1]']
|
33
|
+
@spell2=data['spell2']
|
34
|
+
@statistics = []
|
35
|
+
data['statistics'].each do |stat|
|
36
|
+
@statistics << Stat.new(stat)
|
37
|
+
end
|
38
|
+
@subType=data['subType']
|
39
|
+
@teamId=data['teamId']
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class Player
|
44
|
+
attr_accessor :championId, :summonerId, :teamId
|
45
|
+
|
46
|
+
def initialize(data)
|
47
|
+
@championId = data['championId']
|
48
|
+
@summonerId = data['summonerId']
|
49
|
+
@teamId = data['teamId']
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'sightstone/champion'
|
2
|
+
|
3
|
+
class ChampionModule
|
4
|
+
|
5
|
+
def initialize(sightstone)
|
6
|
+
@sightstone = sightstone
|
7
|
+
end
|
8
|
+
|
9
|
+
def champions(free_to_play=false)
|
10
|
+
uri = "https://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/champion"
|
11
|
+
response = _get_api_response(uri, {'freeToPlay' => free_to_play})
|
12
|
+
puts response
|
13
|
+
|
14
|
+
_parse_response(response) { |resp|
|
15
|
+
data = JSON.parse(resp)
|
16
|
+
champions = []
|
17
|
+
data['champions'].each do |champ|
|
18
|
+
champions << Champion.new(champ)
|
19
|
+
end
|
20
|
+
return champions
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def _get_api_response(uri, headers={})
|
26
|
+
params = {'api_key' => @sightstone.api_key}.merge headers
|
27
|
+
RestClient.get(uri, headers={:params => params}) {|response, request, result| response }
|
28
|
+
rescue SocketError => e
|
29
|
+
nil
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def _parse_response(response, &block)
|
34
|
+
response_code = if response.nil?
|
35
|
+
500
|
36
|
+
else
|
37
|
+
response.code
|
38
|
+
end
|
39
|
+
|
40
|
+
if response_code == 200
|
41
|
+
block.call(response.body)
|
42
|
+
elsif response_code == 500
|
43
|
+
raise Sightstone::SightstoneConnectionException
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'sightstone/summoner'
|
2
|
+
require 'sightstone/match_history'
|
3
|
+
|
4
|
+
class GameModule
|
5
|
+
|
6
|
+
def initialize(sightstone)
|
7
|
+
@sightstone = sightstone
|
8
|
+
end
|
9
|
+
|
10
|
+
def recent(summoner)
|
11
|
+
id = if summoner.is_a? Summoner
|
12
|
+
summoner.id
|
13
|
+
else
|
14
|
+
summoner
|
15
|
+
end
|
16
|
+
uri = "http://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/game/by-summoner/#{id}/recent"
|
17
|
+
|
18
|
+
response = _get_api_response(uri)
|
19
|
+
_parse_response(response) { |resp|
|
20
|
+
data = JSON.parse(resp)
|
21
|
+
return MatchHistory.new(data)
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def _get_api_response(uri)
|
28
|
+
params = {'api_key' => @sightstone.api_key}
|
29
|
+
RestClient.get(uri, headers={:params => params}) {|response, request, result| response }
|
30
|
+
rescue SocketError => e
|
31
|
+
nil
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def _parse_response(response, &block)
|
36
|
+
response_code = if response.nil?
|
37
|
+
500
|
38
|
+
else
|
39
|
+
response.code
|
40
|
+
end
|
41
|
+
|
42
|
+
if response_code == 200
|
43
|
+
block.call(response.body)
|
44
|
+
elsif response_code == 404
|
45
|
+
raise Sightstone::SummonerNotFoundException
|
46
|
+
elsif response_code == 500
|
47
|
+
raise Sightstone::SightstoneConnectionException
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'sightstone/summoner'
|
2
|
+
require 'sightstone/league'
|
3
|
+
|
4
|
+
class LeagueModule
|
5
|
+
def initialize(sightstone)
|
6
|
+
@sightstone = sightstone
|
7
|
+
end
|
8
|
+
|
9
|
+
def league(summoner)
|
10
|
+
id = if summoner.is_a? Summoner
|
11
|
+
summoner.id
|
12
|
+
else
|
13
|
+
summoner
|
14
|
+
end
|
15
|
+
|
16
|
+
uri = "http://prod.api.pvp.net/api/#{@sightstone.region}/v2.1/league/by-summoner/#{id}"
|
17
|
+
response = _get_api_response(uri)
|
18
|
+
_parse_response(response) { |resp|
|
19
|
+
data = JSON.parse(resp)
|
20
|
+
leagueKeys = data.keys
|
21
|
+
leagues = []
|
22
|
+
leagueKeys.each do |key|
|
23
|
+
leagues << League.new(data[key])
|
24
|
+
end
|
25
|
+
return leagues
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def _get_api_response(uri)
|
32
|
+
params = {'api_key' => @sightstone.api_key}
|
33
|
+
RestClient.get(uri, headers={:params => params}) {|response, request, result| response }
|
34
|
+
rescue SocketError => e
|
35
|
+
nil
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
def _parse_response(response, &block)
|
40
|
+
response_code = if response.nil?
|
41
|
+
500
|
42
|
+
else
|
43
|
+
response.code
|
44
|
+
end
|
45
|
+
if response_code == 200
|
46
|
+
block.call(response.body)
|
47
|
+
elsif response_code == 404
|
48
|
+
raise Sightstone::SummonerNotFoundException
|
49
|
+
elsif response_code == 500
|
50
|
+
raise Sightstone::SightstoneConnectionException
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'sightstone/summoner'
|
2
|
+
require 'sightstone/player_stats_summary'
|
3
|
+
require 'sightstone/ranked_stats'
|
4
|
+
|
5
|
+
class StatsModule
|
6
|
+
def initialize(sightstone)
|
7
|
+
@sightstone = sightstone
|
8
|
+
end
|
9
|
+
|
10
|
+
def summary(summoner, season=nil)
|
11
|
+
id = if summoner.is_a? Summoner
|
12
|
+
summoner.id
|
13
|
+
else
|
14
|
+
summoner
|
15
|
+
end
|
16
|
+
uri = "https://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/stats/by-summoner/#{id}/summary"
|
17
|
+
response = if season.nil?
|
18
|
+
_get_api_response(uri)
|
19
|
+
else
|
20
|
+
_get_api_response(uri, {'season' => season})
|
21
|
+
end
|
22
|
+
|
23
|
+
_parse_response(response) { |resp|
|
24
|
+
data = JSON.parse(resp)
|
25
|
+
return PlayerStatsSummaryList.new(data)
|
26
|
+
}
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def ranked(summoner, season=nil)
|
31
|
+
id = if summoner.is_a? Summoner
|
32
|
+
summoner.id
|
33
|
+
else
|
34
|
+
summoner
|
35
|
+
end
|
36
|
+
uri = "https://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/stats/by-summoner/#{id}/ranked"
|
37
|
+
response = if season.nil?
|
38
|
+
_get_api_response(uri)
|
39
|
+
else
|
40
|
+
_get_api_response(uri, {'season' => season})
|
41
|
+
end
|
42
|
+
|
43
|
+
_parse_response(response) { |resp|
|
44
|
+
data = JSON.parse(resp)
|
45
|
+
return RankedStats.new(data)
|
46
|
+
}
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
def _get_api_response(uri, header={})
|
51
|
+
params = {'api_key' => @sightstone.api_key}.merge header
|
52
|
+
RestClient.get(uri, headers={:params => params}) {|response, request, result| response }
|
53
|
+
rescue SocketError => e
|
54
|
+
nil
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
def _parse_response(response, &block)
|
59
|
+
response_code = if response.nil?
|
60
|
+
500
|
61
|
+
else
|
62
|
+
response.code
|
63
|
+
end
|
64
|
+
|
65
|
+
if response_code == 200
|
66
|
+
block.call(response.body)
|
67
|
+
elsif response_code == 404
|
68
|
+
raise Sightstone::SummonerNotFoundException
|
69
|
+
elsif response_code == 500
|
70
|
+
raise Sightstone::SightstoneConnectionException
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'sightstone/summoner'
|
2
|
+
require 'sightstone/masterybook'
|
3
|
+
require 'sightstone/runebook'
|
4
|
+
|
5
|
+
class SummonerModule
|
6
|
+
def initialize(sightstone)
|
7
|
+
@sightstone = sightstone
|
8
|
+
end
|
9
|
+
|
10
|
+
def summoner(name_or_id)
|
11
|
+
uri = if name_or_id.is_a? Integer
|
12
|
+
"http://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/summoner/#{name_or_id}"
|
13
|
+
else
|
14
|
+
"http://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/summoner/by-name/#{name_or_id}"
|
15
|
+
end
|
16
|
+
|
17
|
+
response = _get_api_response(uri)
|
18
|
+
_parse_response(response) { |resp|
|
19
|
+
data = JSON.parse(resp)
|
20
|
+
return Summoner.new(data)
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def names(ids)
|
26
|
+
ids = ids.join(',')
|
27
|
+
uri = "http://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/summoner/#{ids}/name"
|
28
|
+
response = _get_api_response(uri)
|
29
|
+
_parse_response(response) { |resp|
|
30
|
+
data = JSON.parse(resp)
|
31
|
+
return data['summoners']
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def runes(summoner)
|
36
|
+
id = if summoner.is_a? Summoner
|
37
|
+
summoner.id
|
38
|
+
else
|
39
|
+
summoner
|
40
|
+
end
|
41
|
+
uri = "http://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/summoner/#{id}/runes"
|
42
|
+
response = _get_api_response(uri)
|
43
|
+
_parse_response(response) { |resp|
|
44
|
+
data = JSON.parse(resp)
|
45
|
+
return RuneBook.new(data)
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def masteries(summoner)
|
50
|
+
id = if summoner.is_a? Summoner
|
51
|
+
summoner.id
|
52
|
+
else
|
53
|
+
summoner
|
54
|
+
end
|
55
|
+
uri = "http://prod.api.pvp.net/api/lol/#{@sightstone.region}/v1.1/summoner/#{id}/masteries"
|
56
|
+
response = _get_api_response(uri)
|
57
|
+
_parse_response(response) { |resp|
|
58
|
+
data = JSON.parse(resp)
|
59
|
+
return MasteryBook.new(data)
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def _get_api_response(uri)
|
66
|
+
params = {'api_key' => @sightstone.api_key}
|
67
|
+
RestClient.get(uri, headers={:params => params}) {|response, request, result| response }
|
68
|
+
rescue SocketError => e
|
69
|
+
nil
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
def _parse_response(response, &block)
|
74
|
+
response_code = if response.nil?
|
75
|
+
500
|
76
|
+
else
|
77
|
+
response.code
|
78
|
+
end
|
79
|
+
|
80
|
+
if response_code == 200
|
81
|
+
block.call(response.body)
|
82
|
+
elsif response_code == 404
|
83
|
+
raise Sightstone::SummonerNotFoundException
|
84
|
+
elsif response_code == 500
|
85
|
+
raise Sightstone::SightstoneConnectionException
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'sightstone/summoner'
|
2
|
+
require 'sightstone/team'
|
3
|
+
|
4
|
+
class TeamModule
|
5
|
+
def initialize(sightstone)
|
6
|
+
@sightstone = sightstone
|
7
|
+
end
|
8
|
+
|
9
|
+
def teams(summoner)
|
10
|
+
id = if summoner.is_a? Summoner
|
11
|
+
summoner.id
|
12
|
+
else
|
13
|
+
summoner
|
14
|
+
end
|
15
|
+
|
16
|
+
uri = "http://prod.api.pvp.net/api/#{@sightstone.region}/v2.1/team/by-summoner/#{id}"
|
17
|
+
|
18
|
+
response = _get_api_response(uri)
|
19
|
+
_parse_response(response) { |resp|
|
20
|
+
data = JSON.parse(resp)
|
21
|
+
teams = []
|
22
|
+
data.each do |team|
|
23
|
+
teams << Team.new(team)
|
24
|
+
end
|
25
|
+
return teams
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def _get_api_response(uri)
|
34
|
+
params = {'api_key' => @sightstone.api_key}
|
35
|
+
RestClient.get(uri, headers={:params => params}) {|response, request, result| response }
|
36
|
+
rescue SocketError => e
|
37
|
+
nil
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
def _parse_response(response, &block)
|
42
|
+
response_code = if response.nil?
|
43
|
+
500
|
44
|
+
else
|
45
|
+
response.code
|
46
|
+
end
|
47
|
+
|
48
|
+
if response_code == 200
|
49
|
+
block.call(response.body)
|
50
|
+
elsif response_code == 404
|
51
|
+
raise Sightstone::SummonerNotFoundException
|
52
|
+
elsif response_code == 500
|
53
|
+
raise Sightstone::SightstoneConnectionException
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'sightstone/stat'
|
2
|
+
|
3
|
+
class PlayerStatsSummaryList
|
4
|
+
|
5
|
+
attr_accessor :summonerId, :playerStatSummaries
|
6
|
+
|
7
|
+
def initialize(data)
|
8
|
+
@summonerId = data['playerStatSummary']
|
9
|
+
@playerStatSummaries = []
|
10
|
+
data['playerStatSummaries'].each do |summary|
|
11
|
+
@playerStatSummaries << PlayerStatSummary.new(summary)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class PlayerStatSummary
|
17
|
+
attr_accessor :wins, :losses, :modifyDateStr, :modifyDate, :playerStatSummaryType, :aggregatedStats
|
18
|
+
|
19
|
+
def initialize(data)
|
20
|
+
@wins = data['wins']
|
21
|
+
@losses = data['losses']
|
22
|
+
@modifyDatStr = data['modifyDateStr']
|
23
|
+
@modifyDate = data['modifyDate']
|
24
|
+
@playerStatSummaryType = data['playerStatSummaryType']
|
25
|
+
@aggregatedStats = []
|
26
|
+
data['aggregatedStats'].each do |stat|
|
27
|
+
@aggregatedStats << Stat.new(data)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'sightstone/stat'
|
2
|
+
|
3
|
+
class RankedStats
|
4
|
+
attr_accessor :champions, :modifyData, :modifyDateStr, :summonerId
|
5
|
+
|
6
|
+
def initialize(data)
|
7
|
+
@summonerId = data['summonerId']
|
8
|
+
@modifyDate = data['modifyDate']
|
9
|
+
@modifyDateStr = data['modifyDateStr']
|
10
|
+
@champions = []
|
11
|
+
|
12
|
+
data['champions'].each do |champ|
|
13
|
+
@champions << ChampionStats.new(champ)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class ChampionStats
|
19
|
+
attr_accessor :id, :name, :stats
|
20
|
+
|
21
|
+
def initialize(data)
|
22
|
+
@id = data['id']
|
23
|
+
@name = data['name']
|
24
|
+
@stats = []
|
25
|
+
|
26
|
+
data['stats'].each do |stat|
|
27
|
+
@stats << ChampionStat.new(stat)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class ChampionStat < Stat
|
33
|
+
|
34
|
+
attr_accessor :count
|
35
|
+
|
36
|
+
def initialize(data)
|
37
|
+
super(data)
|
38
|
+
@count = data['c']
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class RuneBook
|
2
|
+
attr_accessor :pages, :summonerId
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@summonerId = data['summonerId']
|
6
|
+
@pages = []
|
7
|
+
data['pages'].each do |page|
|
8
|
+
@pages << RunePage.new(page)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class RunePage
|
14
|
+
attr_accessor :id, :slots, :name, :current
|
15
|
+
|
16
|
+
def initialize(data)
|
17
|
+
@id = data['id']
|
18
|
+
@name = data['name']
|
19
|
+
@current = data['current']
|
20
|
+
@slots = {}
|
21
|
+
data['slots'].each do |slot|
|
22
|
+
@slots[slot['runeSlotId']] = Rune.new(slot['rune'])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
class Rune
|
29
|
+
attr_accessor :id, :description, :name, :tier
|
30
|
+
|
31
|
+
def initialize(data)
|
32
|
+
@id = data['id']
|
33
|
+
@description = data['description']
|
34
|
+
@name = data['name']
|
35
|
+
@tier = data['tier']
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class Summoner
|
4
|
+
|
5
|
+
attr_accessor :name, :id, :profileIconId, :revisionDate, :level
|
6
|
+
|
7
|
+
def initialize(data)
|
8
|
+
@name = data['name']
|
9
|
+
@id = data['id']
|
10
|
+
@profileIconId = data['profileIconId']
|
11
|
+
@revisionDate = data['revisionDate']
|
12
|
+
@level = data['summonerLevel']
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
class Team
|
2
|
+
attr_accessor :teamStatSummary, :status, :tag, :roster, :lastGameDate, :modifyDate, :teamId, :timestamp, :lastJoinDate, :secondLastJoinDate, :matchHistory, :lastJoinedRankedTeamQueueDate, :name, :thirdLastJoinDate, :createDate
|
3
|
+
def initialize(data)
|
4
|
+
@status = data['status']
|
5
|
+
@tag = data['tag']
|
6
|
+
@roster = Roster.new(data['roster'])
|
7
|
+
@lastGameDate = data['lastGameDate']
|
8
|
+
@modifyDate = data['modifyDate']
|
9
|
+
@teamId = data['teamId']['fullId']
|
10
|
+
@timestamp = data['timestamp']
|
11
|
+
@lastJoinDate = data['lastJoinDate']
|
12
|
+
@secondLastJoinDate = data['secondLastJoinDate']
|
13
|
+
@matchHistory = []
|
14
|
+
data['matchHistory'].each do |game|
|
15
|
+
matchHistory << Game.new(game)
|
16
|
+
end
|
17
|
+
@lastJoinedRankedTeamQueueDate=data['lastJoinedRankedTeamQueueDate']
|
18
|
+
@name = data['name']
|
19
|
+
@thirdLastJoinDate = data['thirdLastJoinDate']
|
20
|
+
@createDate = data['createDate']
|
21
|
+
@teamStatSummary = []
|
22
|
+
data['teamStatSummary']['teamStatDetails'].each do |detail|
|
23
|
+
teamStatSummary << TeamStat.new(detail)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Roster
|
30
|
+
attr_accessor :ownerId, :memberList
|
31
|
+
def initialize(data)
|
32
|
+
@ownerId = data['ownerId']
|
33
|
+
@memberList = []
|
34
|
+
data['memberList'].each do |m|
|
35
|
+
memberList << Member.new(m)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Member
|
41
|
+
attr_accessor :joinDate, :inviteDate, :status, :playerId
|
42
|
+
def initialize(data)
|
43
|
+
@joinDate = data['joinDate']
|
44
|
+
@inviteDate = data['inviteDate']
|
45
|
+
@status = data['status']
|
46
|
+
@playerId = data['playerId']
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class TeamStat
|
51
|
+
attr_accessor :wins, :losses, :averageGamesPlayed, :teamId, :teamStatType
|
52
|
+
def initialize(data)
|
53
|
+
@wins = data['wins']
|
54
|
+
@losses = data['losses']
|
55
|
+
@averageGamesPlayed = data['averageGamesPlayed']
|
56
|
+
@teamId = data['teamId']
|
57
|
+
@teamStatType = data['teamStatType']
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class Game
|
63
|
+
attr_accessor :gameMode, :mapId, :assists, :opposingTeamName, :invalid, :deaths, :gameId, :kills, :win, :date, :opposingTeamKills
|
64
|
+
def initialize(data)
|
65
|
+
@gameMode = data['gameMode']
|
66
|
+
@mapId = data['mapId']
|
67
|
+
@assists = data['assists']
|
68
|
+
@opposingTeamName = data['opposingTeamName']
|
69
|
+
@invalid = data['invalid']
|
70
|
+
@deaths = data['deaths']
|
71
|
+
@gameId = data['gameId']
|
72
|
+
@kills = data['kills']
|
73
|
+
@win = data['win']
|
74
|
+
@date = data['date']
|
75
|
+
@opposingTeamKills = data['opposingTeamKills']
|
76
|
+
end
|
77
|
+
end
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sightstone
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Bauer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2012-12-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Ruby wrapper for riots league of legends api
|
42
|
+
email: danijob88@googlemail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/sightstone/champion.rb
|
48
|
+
- lib/sightstone/league.rb
|
49
|
+
- lib/sightstone/masterybook.rb
|
50
|
+
- lib/sightstone/match_history.rb
|
51
|
+
- lib/sightstone/modules/champion_module.rb
|
52
|
+
- lib/sightstone/modules/game_module.rb
|
53
|
+
- lib/sightstone/modules/league_module.rb
|
54
|
+
- lib/sightstone/modules/stats_module.rb
|
55
|
+
- lib/sightstone/modules/summoner_module.rb
|
56
|
+
- lib/sightstone/modules/team_module.rb
|
57
|
+
- lib/sightstone/player_stats_summary.rb
|
58
|
+
- lib/sightstone/ranked_stats.rb
|
59
|
+
- lib/sightstone/runebook.rb
|
60
|
+
- lib/sightstone/stat.rb
|
61
|
+
- lib/sightstone/summoner.rb
|
62
|
+
- lib/sightstone/team.rb
|
63
|
+
- lib/sightstone.rb
|
64
|
+
homepage: http://rubygems.org/gems/outrage
|
65
|
+
licenses:
|
66
|
+
- MIT
|
67
|
+
metadata: {}
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 2.1.10
|
85
|
+
signing_key:
|
86
|
+
specification_version: 4
|
87
|
+
summary: Ruby wrapper for riots league of legends api
|
88
|
+
test_files: []
|