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 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: []