demacia 0.0.1
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 +73 -0
- data/lib/demacia/Page.rb +16 -0
- data/lib/demacia/Rune.rb +13 -0
- data/lib/demacia/Summoner.rb +59 -0
- data/lib/demacia/Talent.rb +17 -0
- metadata +50 -0
data/lib/Demacia.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'openssl'
|
4
|
+
require 'htmlentities'
|
5
|
+
require 'demacia/Summoner.rb'
|
6
|
+
|
7
|
+
module Demacia
|
8
|
+
class Caller
|
9
|
+
attr_accessor :api_key, :entry_point, :api_suffix, :region
|
10
|
+
|
11
|
+
# Initializes the Caller with an api key (needed)
|
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
|
15
|
+
def initialize(key, region)
|
16
|
+
@api_key = key
|
17
|
+
@region = region
|
18
|
+
@api_suffix = "?api_key=" + @api_key
|
19
|
+
@entry_point = "http://prod.api.pvp.net/api/lol/" + @region +"/v1.1/"
|
20
|
+
end
|
21
|
+
|
22
|
+
# Gets a summoner's info from riot's API based on its name
|
23
|
+
# Params:
|
24
|
+
# +name+:: The summoner name (nickname). NOT the account name
|
25
|
+
def summoner_by_name(name)
|
26
|
+
encoded_name = HTMLEntities.new.encode name
|
27
|
+
summoner = Demacia::Summoner.new(@entry_point+"summoner/by-name/"+encoded_name+@api_suffix)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Gets a summoner's info from riot's API based on its id
|
31
|
+
# Params:
|
32
|
+
# +id+:: The summoner id from riot's api
|
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
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/demacia/Page.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module Demacia
|
2
|
+
# Represents a rune page
|
3
|
+
class Page
|
4
|
+
attr_accessor :name, :current, :talents
|
5
|
+
|
6
|
+
# Constructor, initializes the page with a name and a current
|
7
|
+
# Params:
|
8
|
+
# +name+:: The page's name
|
9
|
+
# +current+:: A boolean that tells us if this is the currently used page
|
10
|
+
def initialize(name, current)
|
11
|
+
@name = name
|
12
|
+
@current = current
|
13
|
+
talents = Array.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/demacia/Rune.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Demacia
|
2
|
+
class Rune
|
3
|
+
attr_accessor :id, :description, :name, :tier, :slot_id
|
4
|
+
|
5
|
+
def initialize(id, description, name, tier, slot_id)
|
6
|
+
@id = id
|
7
|
+
@name = name
|
8
|
+
@tier = tier
|
9
|
+
@description = description
|
10
|
+
@slot_id = slot_id
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'openssl'
|
4
|
+
require 'Page'
|
5
|
+
require 'Talent'
|
6
|
+
require 'Rune'
|
7
|
+
|
8
|
+
module Demacia
|
9
|
+
class Summoner
|
10
|
+
attr_accessor :masteries, :runes, :profile_icon, :name, :id, :level
|
11
|
+
|
12
|
+
# Class constructor, gets the basic Summoner info from riot api. Does not auto load the masteries nor runes
|
13
|
+
# Params:
|
14
|
+
# +query_string+:: The full query string forged from name, entry point and method
|
15
|
+
def initialize(query_string)
|
16
|
+
answer_string = open(query_string).read
|
17
|
+
parsed_answer = JSON.parse(answer_string)
|
18
|
+
puts parsed_answer
|
19
|
+
@level = parsed_answer["summonerLevel"]
|
20
|
+
@profile_icon = parsed_answer["profileIconId"]
|
21
|
+
@name = parsed_answer["name"]
|
22
|
+
@id = parsed_answer["id"]
|
23
|
+
puts parsed_answer["id"]
|
24
|
+
end
|
25
|
+
|
26
|
+
# Loads masteries based on a query to query string.
|
27
|
+
# Params:
|
28
|
+
# +query_string+:: the full query string forged from name, entry point and method
|
29
|
+
def load_masteries(query_string)
|
30
|
+
@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
|
38
|
+
end
|
39
|
+
@masteries << page_buffer
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Loads runes based on a query to query string. The runes are sorted by their slot id
|
44
|
+
# Params:
|
45
|
+
# +query_string+:: the full query string forged from name, entry point and method
|
46
|
+
def load_runes(query_string)
|
47
|
+
@runes = Array.new
|
48
|
+
answer_string = open(query_string).read
|
49
|
+
parsed_answer = JSON.parse(answer_string)
|
50
|
+
|
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
|
55
|
+
end
|
56
|
+
@runes.sort { |a, b| a.slot_id <=> b.slot_id }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Demacia
|
2
|
+
# Represents a LoL talent in a page
|
3
|
+
class Talent
|
4
|
+
attr_accessor :id, :name, :rank
|
5
|
+
|
6
|
+
# Constructor, initializes the talent
|
7
|
+
# Params:
|
8
|
+
# +id+:: The talent's internal id provided by riot
|
9
|
+
# +name+:: The talent's name
|
10
|
+
# +rank+:: The talent's rank, aka its level in the talents page (1-2-3-4)
|
11
|
+
def initialize(id, name, rank)
|
12
|
+
@id = id
|
13
|
+
@name = name
|
14
|
+
@rank = rank
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: demacia
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Paul Forti
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-12-10 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: For Demacia!
|
15
|
+
email: paul.forti@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/Demacia.rb
|
21
|
+
- lib/demacia/Page.rb
|
22
|
+
- lib/demacia/Rune.rb
|
23
|
+
- lib/demacia/Summoner.rb
|
24
|
+
- lib/demacia/Talent.rb
|
25
|
+
homepage: http://rubygems.org/gems/demacia
|
26
|
+
licenses:
|
27
|
+
- MIT
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 1.8.24
|
47
|
+
signing_key:
|
48
|
+
specification_version: 3
|
49
|
+
summary: Demacia helps ruby devs get data from the League of Legends API
|
50
|
+
test_files: []
|