demacia 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/Demacia.rb +5 -41
- data/lib/demacia/Page.rb +12 -2
- data/lib/demacia/Summoner.rb +62 -25
- data/lib/demacia/Talent.rb +6 -0
- metadata +99 -3
data/lib/Demacia.rb
CHANGED
@@ -10,8 +10,8 @@ module Demacia
|
|
10
10
|
|
11
11
|
# Initializes the Caller with an api key (needed)
|
12
12
|
# Params:
|
13
|
-
# +key+:: the api key provided by riot
|
14
|
-
# +region+:: the region where the requests have to be made. Can be one of the following : tr,br,na,euw,eune
|
13
|
+
# - +key+:: the api key provided by riot
|
14
|
+
# - +region+:: the region where the requests have to be made. Can be one of the following : tr,br,na,euw,eune
|
15
15
|
def initialize(key, region)
|
16
16
|
@api_key = key
|
17
17
|
@region = region
|
@@ -21,53 +21,17 @@ module Demacia
|
|
21
21
|
|
22
22
|
# Gets a summoner's info from riot's API based on its name
|
23
23
|
# Params:
|
24
|
-
# +name+:: The summoner name (nickname). NOT the account name
|
24
|
+
# - +name+:: The summoner name (nickname). NOT the account name
|
25
25
|
def summoner_by_name(name)
|
26
26
|
encoded_name = HTMLEntities.new.encode name
|
27
|
-
summoner = Demacia::Summoner.new(@entry_point+"summoner/by-name/"+encoded_name+@api_suffix)
|
27
|
+
summoner = Demacia::Summoner.new(@entry_point+"summoner/by-name/"+encoded_name+@api_suffix, @region)
|
28
28
|
end
|
29
29
|
|
30
30
|
# Gets a summoner's info from riot's API based on its id
|
31
31
|
# Params:
|
32
32
|
# +id+:: The summoner id from riot's api
|
33
33
|
def summoner_by_id(id)
|
34
|
-
summoner = Demacia::Summoner.new(@entry_point+"summoner/"+id+@api_suffix)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Gets a summoner's info and masteries from riot's API based on its name
|
38
|
-
# Params:
|
39
|
-
# +name+:: The summoner name from riot's api
|
40
|
-
def summoner_masteries_by_name(name)
|
41
|
-
summoner = summoner_by_name(name)
|
42
|
-
summoner.load_masteries(@entry_point+"summoner/"+summoner.id.to_s+"/masteries"+@api_suffix)
|
43
|
-
summoner
|
44
|
-
end
|
45
|
-
|
46
|
-
# Gets a summoner's info and masteries from riot's API based on its id
|
47
|
-
# Params:
|
48
|
-
# +id+:: The summoner id from riot's api
|
49
|
-
def summoner_masteries_by_id(id)
|
50
|
-
summoner = summoner_by_id(id)
|
51
|
-
summoner.load_masteries(@entry_point+"summoner/"+summoner.id.to_s+"/masteries"+@api_suffix)
|
52
|
-
summoner
|
53
|
-
end
|
54
|
-
|
55
|
-
# Gets a summoner's info and runes from riot's API based on its name
|
56
|
-
# Params:
|
57
|
-
# +name+:: The summoner name from riot's api
|
58
|
-
def summoner_runes_by_name(name)
|
59
|
-
summoner = summoner_by_name(name)
|
60
|
-
summoner.load_runes(@entry_point+"summoner/"+summoner.id.to_s+"/runes"+@api_suffix)
|
61
|
-
summoner
|
62
|
-
end
|
63
|
-
|
64
|
-
# Gets a summoner's info and runes from riot's API based on its id
|
65
|
-
# Params:
|
66
|
-
# +id+:: The summoner id from riot's api
|
67
|
-
def summoner_runes_by_id(id)
|
68
|
-
summoner = summoner_by_id(id)
|
69
|
-
summoner.load_runes(@entry_point+"summoner/"+summoner.id.to_s+"/runes"+@api_suffix)
|
70
|
-
summoner
|
34
|
+
summoner = Demacia::Summoner.new(@entry_point+"summoner/"+id+@api_suffix, @region)
|
71
35
|
end
|
72
36
|
end
|
73
37
|
end
|
data/lib/demacia/Page.rb
CHANGED
@@ -7,10 +7,20 @@ module Demacia
|
|
7
7
|
# Params:
|
8
8
|
# +name+:: The page's name
|
9
9
|
# +current+:: A boolean that tells us if this is the currently used page
|
10
|
-
def initialize(name, current)
|
10
|
+
def initialize(name, current, talents)
|
11
11
|
@name = name
|
12
12
|
@current = current
|
13
|
-
talents =
|
13
|
+
@talents = talents
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
is_used = current ? "yes" : "no"
|
18
|
+
return_string = "\nTalent page name:\t"+@name+
|
19
|
+
"\nCurrently used:\t"+is_used+
|
20
|
+
"\nTalents :\n"
|
21
|
+
talents.each do |talent|
|
22
|
+
return_string << "\t"+ talent.to_s
|
23
|
+
end
|
14
24
|
end
|
15
25
|
end
|
16
26
|
end
|
data/lib/demacia/Summoner.rb
CHANGED
@@ -4,56 +4,93 @@ require 'openssl'
|
|
4
4
|
require 'Page'
|
5
5
|
require 'Talent'
|
6
6
|
require 'Rune'
|
7
|
+
require 'Tome'
|
7
8
|
|
8
9
|
module Demacia
|
9
10
|
class Summoner
|
10
|
-
attr_accessor :masteries, :runes, :profile_icon, :name, :id, :level
|
11
|
+
attr_accessor :masteries, :runes, :profile_icon, :name, :id, :level, :region
|
11
12
|
|
12
13
|
# Class constructor, gets the basic Summoner info from riot api. Does not auto load the masteries nor runes
|
13
14
|
# Params:
|
14
|
-
# +query_string+:: The full query string forged from name, entry point and method
|
15
|
-
|
15
|
+
# - +query_string+:: The full query string forged from name, entry point and method
|
16
|
+
# - +region+:: The region in wich the summoner resides
|
17
|
+
def initialize(query_string, region)
|
16
18
|
answer_string = open(query_string).read
|
17
19
|
parsed_answer = JSON.parse(answer_string)
|
18
|
-
puts parsed_answer
|
19
20
|
@level = parsed_answer["summonerLevel"]
|
20
21
|
@profile_icon = parsed_answer["profileIconId"]
|
21
22
|
@name = parsed_answer["name"]
|
22
23
|
@id = parsed_answer["id"]
|
23
|
-
|
24
|
+
@region = region
|
24
25
|
end
|
25
26
|
|
26
|
-
# Loads masteries based on
|
27
|
+
# Loads masteries based on an api key
|
27
28
|
# Params:
|
28
|
-
# +
|
29
|
-
def load_masteries(
|
29
|
+
# - +key+:: the api key
|
30
|
+
def load_masteries!(key)
|
30
31
|
@masteries = Array.new
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
begin
|
33
|
+
answer_string = open("http://prod.api.pvp.net/api/lol/" + @region +"/v1.1/summoner/"+@id.to_s+"/masteries?api_key="+key).read
|
34
|
+
parsed_answer = JSON.parse(answer_string)
|
35
|
+
parsed_answer["pages"].each do |page|
|
36
|
+
talents_buffer = Array.new
|
37
|
+
page["talents"].each do |talent|
|
38
|
+
talent_buffer = Demacia::Talent.new(talent["id"], talent["name"], talent["rank"])
|
39
|
+
talents_buffer << talent_buffer
|
40
|
+
end
|
41
|
+
page_buffer = Demacia::Page.new(page["name"], page["current"], talents_buffer)
|
42
|
+
@masteries << page_buffer
|
38
43
|
end
|
39
|
-
|
44
|
+
rescue Exception => e
|
45
|
+
puts "An error occured when retreiving the summoner's masteries : "
|
46
|
+
puts e.message
|
40
47
|
end
|
41
48
|
end
|
42
49
|
|
43
|
-
# Loads runes based on
|
50
|
+
# Loads runes based on an api key. The runes are sorted by their slot id
|
44
51
|
# Params:
|
45
|
-
# +
|
46
|
-
def load_runes(
|
52
|
+
# - +key+:: the full query string forged from name, entry point and method
|
53
|
+
def load_runes!(key)
|
47
54
|
@runes = Array.new
|
48
|
-
|
55
|
+
begin
|
56
|
+
answer_string = open("http://prod.api.pvp.net/api/lol/" + @region +"/v1.1/summoner/"+@id.to_s+"/runes?api_key="+key).read
|
57
|
+
parsed_answer = JSON.parse(answer_string)
|
58
|
+
parsed_answer["pages"].each do |page|
|
59
|
+
runes_buffer = Array.new
|
60
|
+
page["slots"].each do |slot|
|
61
|
+
rune_buffer = slot["rune"]
|
62
|
+
rune_out = Rune.new(rune_buffer["id"],rune_buffer["description"],rune_buffer["name"],rune_buffer["tier"], slot["runeSlotId"])
|
63
|
+
runes_buffer << rune_out
|
64
|
+
end
|
65
|
+
runes_buffer.sort { |a, b| a.slot_id <=> b.slot_id }
|
66
|
+
tome_buffer = Tome.new(page["id"], page["name"], page["current"], runes_buffer)
|
67
|
+
@runes << tome_buffer
|
68
|
+
end
|
69
|
+
rescue Exception => e
|
70
|
+
puts "An error occured when retreiving the summoner's runes : "
|
71
|
+
puts e.message
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def get_last_ten_games(key)
|
76
|
+
answer_string = open("http://prod.api.pvp.net/api/lol/" + @region +"/v1.1/game/by-summoner"+@id.to_s+"/recent?api_key="+key).read
|
49
77
|
parsed_answer = JSON.parse(answer_string)
|
78
|
+
end
|
50
79
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
80
|
+
# Prints the summoner info to the console in a friendly way
|
81
|
+
def to_s
|
82
|
+
return_string = "\t\tSummoner\n"+
|
83
|
+
"\nName:\t\t"+@name+
|
84
|
+
"\nID:\t\t"+@id.to_s+
|
85
|
+
"\nLevel:\t\t"+@level.to_s+
|
86
|
+
"\nIcon ID:\t"+@profile_icon.to_s
|
87
|
+
if masteries.nil? || masteries.empty?
|
88
|
+
return_string << "\nNo masteries"
|
89
|
+
else
|
90
|
+
masteries.each do |page|
|
91
|
+
return_string << "\tMastery Page\n\t"+ page.to_s
|
92
|
+
end
|
55
93
|
end
|
56
|
-
@runes.sort { |a, b| a.slot_id <=> b.slot_id }
|
57
94
|
end
|
58
95
|
end
|
59
96
|
end
|
data/lib/demacia/Talent.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: demacia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,104 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
13
|
-
dependencies:
|
12
|
+
date: 2013-12-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: openuri
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: htmlentities
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: json
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: openuri
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: htmlentities
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
14
110
|
description: For Demacia!
|
15
111
|
email: paul.forti@gmail.com
|
16
112
|
executables: []
|