demacia 0.0.1 → 0.0.3
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.
- 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: []
|