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 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 = Array.new
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
@@ -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
- def initialize(query_string)
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
- puts parsed_answer["id"]
24
+ @region = region
24
25
  end
25
26
 
26
- # Loads masteries based on a query to query string.
27
+ # Loads masteries based on an api key
27
28
  # Params:
28
- # +query_string+:: the full query string forged from name, entry point and method
29
- def load_masteries(query_string)
29
+ # - +key+:: the api key
30
+ def load_masteries!(key)
30
31
  @masteries = Array.new
31
- answer_string = open(query_string).read
32
- parsed_answer = JSON.parse(answer_string)
33
- parsed_answer["pages"].each do |key, page|
34
- page_buffer = Demacia::Page.new(page["name"], page["current"])
35
- page["talents"].each do |talent_key, talent|
36
- talent_buffer = Demacia::Talent.new(talent["id"], talent["name"], talent["rank"])
37
- page_buffer.talents << talent_buffer
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
- @masteries << page_buffer
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 a query to query string. The runes are sorted by their slot id
50
+ # Loads runes based on an api key. The runes are sorted by their slot id
44
51
  # Params:
45
- # +query_string+:: the full query string forged from name, entry point and method
46
- def load_runes(query_string)
52
+ # - +key+:: the full query string forged from name, entry point and method
53
+ def load_runes!(key)
47
54
  @runes = Array.new
48
- answer_string = open(query_string).read
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
- parsed_answer["pages"].each do |key, page|
52
- rune_buffer = page["rune"]
53
- rune_out = Rune.new(rune_buffer["id"],rune_buffer["description"],rune_buffer["name"],rune_buffer["tier"], page["runeSlotId"])
54
- @runes << rune_out
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
@@ -13,5 +13,11 @@ module Demacia
13
13
  @name = name
14
14
  @rank = rank
15
15
  end
16
+
17
+ def to_s
18
+ return_string = "\nTalent id: \t"+@id.to_s +
19
+ "\nTalent name:\t"+@name +
20
+ "\nTalent rank:\t"+@rank.to_s
21
+ end
16
22
  end
17
23
  end
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.1
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-10 00:00:00.000000000 Z
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: []