vigor 0.3.0 → 0.3.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/vigor.rb CHANGED
@@ -1,109 +1,7 @@
1
- require 'httparty'
2
-
3
- module Vigor
4
- class Client
5
- include HTTParty
6
- # debug_output $stderr
7
-
8
- def initialize(api_key, region = "na")
9
- self.class.default_params :api_key => api_key
10
- self.class.base_uri "http://prod.api.pvp.net/api/lol/#{region}/v1.1"
11
- end
12
-
13
- def summoner(lookup_value)
14
- if lookup_value.is_a? String
15
- return Summoner.new(self.class.get("/summoner/by-name/" + lookup_value.gsub(/\s+/, "")))
16
- else
17
- return Summoner.new(self.class.get("/summoner/" + lookup_value.to_s))
18
- end
19
- end
20
- end
21
-
22
- class Summoner
23
- attr_accessor :id, :name, :profile_icon_id, :level, :revision_date
24
-
25
- def initialize(data)
26
- @id = data["id"]
27
- @name = data["name"]
28
- @profile_icon_id = data["profileIconId"]
29
- @level = data["summonerLevel"]
30
- @revision_date = DateTime.strptime(data["revisionDate"].to_s,'%s')
31
- end
32
-
33
- def mastery_pages
34
- @mastery_pages ||= Client.get("/summoner/" + @id.to_s + "/masteries")["pages"].map {|page| MasteryPage.new(page)}
35
- end
36
-
37
- def rune_pages
38
- @rune_pages ||= Client.get("/summoner/" + @id.to_s + "/runes")["pages"].map {|page| RunePage.new(page)}
39
- end
40
-
41
- def current_mastery_page
42
- mastery_pages.find {|page| page.current? }
43
- end
44
-
45
- def current_rune_page
46
- rune_pages.find {|page| page.current? }
47
- end
48
- end
49
-
50
- class Page
51
- attr_accessor :name
52
-
53
- def initialize(data)
54
- @name = data["name"]
55
- @current = data["current"]
56
- end
57
-
58
- def current?
59
- @current
60
- end
61
- end
62
-
63
- class MasteryPage < Page
64
- attr_accessor :talents
65
-
66
- def initialize(data)
67
- super
68
-
69
- return if data["talents"].nil?
70
- @talents = data["talents"].map {|talent| Talent.new(talent)}
71
- end
72
- end
73
-
74
- class Talent
75
- attr_accessor :id, :rank, :name
76
-
77
- def initialize(data)
78
- @id = data["id"]
79
- @rank = data["rank"]
80
- @name = data["name"]
81
- end
82
- end
83
-
84
- class RunePage < Page
85
- attr_accessor :runes, :id
86
-
87
- def initialize(data)
88
- super
89
- @id = data["id"]
90
-
91
- return if data["slots"].nil?
92
- @runes = data["slots"].map {|slot| Rune.new(slot)}
93
- end
94
- end
95
-
96
- class Rune
97
- attr_accessor :slot, :id, :description, :name, :tier
98
-
99
- def initialize(data)
100
- rune = data["rune"]
101
-
102
- @slot = data["runeSlotId"]
103
- @id = rune["id"]
104
- @description = rune["description"]
105
- @name = rune["name"]
106
- @tier = rune["tier"]
107
- end
108
- end
109
- end
1
+ require 'vigor/summoner'
2
+ require 'vigor/client'
3
+ require 'vigor/page'
4
+ require 'vigor/mastery_page'
5
+ require 'vigor/talent'
6
+ require 'vigor/rune_page'
7
+ require 'vigor/rune'
@@ -0,0 +1,21 @@
1
+ require 'httparty'
2
+
3
+ module Vigor
4
+ class Client
5
+ include HTTParty
6
+ # debug_output $stderr
7
+
8
+ def initialize(api_key, region = "na")
9
+ self.class.default_params :api_key => api_key
10
+ self.class.base_uri "http://prod.api.pvp.net/api/lol/#{region}/v1.1"
11
+ end
12
+
13
+ def summoner(lookup_value)
14
+ if lookup_value.is_a? String
15
+ return Summoner.new(self.class.get("/summoner/by-name/" + lookup_value.gsub(/\s+/, "")))
16
+ else
17
+ return Summoner.new(self.class.get("/summoner/" + lookup_value.to_s))
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module Vigor
2
+ class MasteryPage < Page
3
+ include Enumerable
4
+ attr_accessor :talents
5
+
6
+ def initialize(data)
7
+ super
8
+
9
+ return if data["talents"].nil?
10
+ @talents = data["talents"].map {|talent| Talent.new(talent)}
11
+ end
12
+
13
+ def each(&block)
14
+ @talents.each do |talent|
15
+ block.call(talent)
16
+ end
17
+ end
18
+ end
19
+ end
data/lib/vigor/page.rb ADDED
@@ -0,0 +1,14 @@
1
+ module Vigor
2
+ class Page
3
+ attr_accessor :name
4
+
5
+ def initialize(data)
6
+ @name = data["name"]
7
+ @current = data["current"]
8
+ end
9
+
10
+ def current?
11
+ @current
12
+ end
13
+ end
14
+ end
data/lib/vigor/rune.rb ADDED
@@ -0,0 +1,15 @@
1
+ module Vigor
2
+ class Rune
3
+ attr_accessor :slot, :id, :description, :name, :tier
4
+
5
+ def initialize(data)
6
+ rune = data["rune"]
7
+
8
+ @slot = data["runeSlotId"]
9
+ @id = rune["id"]
10
+ @description = rune["description"]
11
+ @name = rune["name"]
12
+ @tier = rune["tier"]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module Vigor
2
+ class RunePage < Page
3
+ include Enumerable
4
+ attr_accessor :runes, :id
5
+
6
+ def initialize(data)
7
+ super
8
+ @id = data["id"]
9
+
10
+ return if data["slots"].nil?
11
+ @runes = data["slots"].map {|slot| Rune.new(slot)}
12
+ end
13
+
14
+ def each(&block)
15
+ @runes.each do |rune|
16
+ block.call(rune)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ module Vigor
2
+ class Summoner
3
+ attr_accessor :id, :name, :profile_icon_id, :level, :revision_date
4
+
5
+ def initialize(data)
6
+ @id = data["id"]
7
+ @name = data["name"]
8
+ @profile_icon_id = data["profileIconId"]
9
+ @level = data["summonerLevel"]
10
+ @revision_date = DateTime.strptime(data["revisionDate"].to_s,'%s')
11
+ end
12
+
13
+ def mastery_pages
14
+ Client.get("/summoner/" + @id.to_s + "/masteries")["pages"].map {|page| MasteryPage.new(page)}
15
+ end
16
+
17
+ def rune_pages
18
+ Client.get("/summoner/" + @id.to_s + "/runes")["pages"].map {|page| RunePage.new(page)}
19
+ end
20
+
21
+ def current_mastery_page
22
+ mastery_pages.find {|page| page.current? }
23
+ end
24
+
25
+ def current_rune_page
26
+ rune_pages.find {|page| page.current? }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ module Vigor
2
+ class Talent
3
+ attr_accessor :id, :rank, :name
4
+
5
+ def initialize(data)
6
+ @id = data["id"]
7
+ @rank = data["rank"]
8
+ @name = data["name"]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://prod.api.pvp.net/api/lol/na/v1.1/summoner/23893133?api_key=<API_KEY>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Access-Control-Allow-Headers:
16
+ - Content-Type
17
+ Access-Control-Allow-Methods:
18
+ - GET, POST, DELETE, PUT
19
+ Access-Control-Allow-Origin:
20
+ - ! '*'
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Date:
24
+ - Thu, 12 Dec 2013 10:36:46 GMT
25
+ Server:
26
+ - Jetty(9.1.0.v20131115)
27
+ X-Newrelic-App-Data:
28
+ - PxQFWFFSDwQTVVdUBAgAVkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XSEMRDA9YX1IULVVLE0ohJjYZQBRSFggYAh1VCVAIWARWVwEbTFdPGldRAFJTUwJTXlVTB1BXVQZAbQ==
29
+ Content-Length:
30
+ - '143'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! '{"id":23893133,"name":"Semiel","profileIconId":518,"summonerLevel":30,"revisionDate":1386532311000,"revisionDateStr":"12/08/2013
36
+ 07:51 PM UTC"}'
37
+ http_version:
38
+ recorded_at: Thu, 12 Dec 2013 10:36:31 GMT
39
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://prod.api.pvp.net/api/lol/na/v1.1/summoner/by-name/semiel?api_key=<API_KEY>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Access-Control-Allow-Headers:
16
+ - Content-Type
17
+ Access-Control-Allow-Methods:
18
+ - GET, POST, DELETE, PUT
19
+ Access-Control-Allow-Origin:
20
+ - ! '*'
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Date:
24
+ - Thu, 12 Dec 2013 10:36:46 GMT
25
+ Server:
26
+ - Jetty(9.1.0.v20131115)
27
+ X-Newrelic-App-Data:
28
+ - PxQFWFFSDwQTVVdUBAgAVkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XUUlJDwNaVGtJH19XXgcbQ0p3J2xLGhQEHANJCU8BUQJbVA4OUEpOCR8SVlcGA1VRVAcGBwtRXgcAUkBl
29
+ Content-Length:
30
+ - '143'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! '{"id":23893133,"name":"Semiel","profileIconId":518,"summonerLevel":30,"revisionDate":1386532311000,"revisionDateStr":"12/08/2013
36
+ 07:51 PM UTC"}'
37
+ http_version:
38
+ recorded_at: Thu, 12 Dec 2013 10:36:31 GMT
39
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://prod.api.pvp.net/api/lol/na/v1.1/summoner/by-name/BestRivenNA?api_key=<API_KEY>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Access-Control-Allow-Headers:
16
+ - Content-Type
17
+ Access-Control-Allow-Methods:
18
+ - GET, POST, DELETE, PUT
19
+ Access-Control-Allow-Origin:
20
+ - ! '*'
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Date:
24
+ - Thu, 12 Dec 2013 10:36:47 GMT
25
+ Server:
26
+ - Jetty(9.1.0.v20131115)
27
+ X-Newrelic-App-Data:
28
+ - PxQFWFFSDwQTVVdUBAgAVkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XUUlJDwNaVGtJH19XXgcbQ0p3J2xLGhQEHANJCU8BUQBRVgQAVlJPFQIcRgIAAFJTAAJQAQdRBAZXAgEaPw==
29
+ Content-Length:
30
+ - '150'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! '{"id":32400810,"name":"Best Riven NA","profileIconId":508,"summonerLevel":30,"revisionDate":1386729379000,"revisionDateStr":"12/11/2013
36
+ 02:36 AM UTC"}'
37
+ http_version:
38
+ recorded_at: Thu, 12 Dec 2013 10:36:31 GMT
39
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://prod.api.pvp.net/api/lol/euw/v1.1/summoner/by-name/Froggen?api_key=<API_KEY>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Access-Control-Allow-Headers:
16
+ - Content-Type
17
+ Access-Control-Allow-Methods:
18
+ - GET, POST, DELETE, PUT
19
+ Access-Control-Allow-Origin:
20
+ - ! '*'
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Date:
24
+ - Thu, 12 Dec 2013 10:36:46 GMT
25
+ Server:
26
+ - Jetty(9.1.0.v20131115)
27
+ X-Newrelic-App-Data:
28
+ - PxQFWFFSDwQTVVdUBAgPUkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XUUlJDwNaVGtJH19XXgcbQ0p3J2xLGhQEHANJCU8BUQBQVwAOWUpOCR8SUlNTAQVSVVUHDlFQVFoAVUBl
29
+ Content-Length:
30
+ - '144'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! '{"id":19531813,"name":"Froggen","profileIconId":562,"summonerLevel":30,"revisionDate":1386782571000,"revisionDateStr":"12/11/2013
36
+ 05:22 PM UTC"}'
37
+ http_version:
38
+ recorded_at: Thu, 12 Dec 2013 10:36:31 GMT
39
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,145 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://prod.api.pvp.net/api/lol/na/v1.1/summoner/by-name/semiel?api_key=<API_KEY>
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Access-Control-Allow-Headers:
16
+ - Content-Type
17
+ Access-Control-Allow-Methods:
18
+ - GET, POST, DELETE, PUT
19
+ Access-Control-Allow-Origin:
20
+ - ! '*'
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Date:
24
+ - Thu, 12 Dec 2013 10:34:37 GMT
25
+ Server:
26
+ - Jetty(9.1.0.v20131115)
27
+ X-Newrelic-App-Data:
28
+ - PxQFWFFSDwQTVVdUBAgAVkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XUUlJDwNaVGtJH19XXgcbQ0p3J2xLGhQEHANJCU8BUQBQUQICV0pOCR8SVlcGUVdUXwdXAQoEUFBXEj8=
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! '{"id":23893133,"name":"Semiel","profileIconId":518,"summonerLevel":30,"revisionDate":1386532311000,"revisionDateStr":"12/08/2013
36
+ 07:51 PM UTC"}'
37
+ http_version:
38
+ recorded_at: Thu, 12 Dec 2013 10:34:21 GMT
39
+ - request:
40
+ method: get
41
+ uri: http://prod.api.pvp.net/api/lol/na/v1.1/summoner/23893133/masteries?api_key=<API_KEY>
42
+ body:
43
+ encoding: US-ASCII
44
+ string: ''
45
+ headers: {}
46
+ response:
47
+ status:
48
+ code: 200
49
+ message: OK
50
+ headers:
51
+ Access-Control-Allow-Headers:
52
+ - Content-Type
53
+ Access-Control-Allow-Methods:
54
+ - GET, POST, DELETE, PUT
55
+ Access-Control-Allow-Origin:
56
+ - ! '*'
57
+ Content-Type:
58
+ - application/json;charset=UTF-8
59
+ Date:
60
+ - Thu, 12 Dec 2013 10:34:37 GMT
61
+ Server:
62
+ - Jetty(9.1.0.v20131115)
63
+ X-Newrelic-App-Data:
64
+ - PxQFWFFSDwQTVVdUBAgAVkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XSEMRDA9YX1IULVVLb00LAhFEB0oLXUsUGnQgbUgTTQNMVBoHT1ZVDAoAXFhbGxwGSkYABlBaA1FaB1cNUA5aAAMKR2Q=
65
+ Content-Length:
66
+ - '2757'
67
+ Connection:
68
+ - keep-alive
69
+ body:
70
+ encoding: US-ASCII
71
+ string: ! '{"summonerId":23893133,"pages":[{"name":"Mastery Page 4","current":false,"talents":[{"id":4233,"name":"Hardiness","rank":3},{"id":4211,"name":"Block","rank":2},{"id":4121,"name":"Expose
72
+ Weakness","rank":1},{"id":4213,"name":"Enchanted Armor","rank":2},{"id":4244,"name":"Evasive","rank":1},{"id":4234,"name":"Resistance","rank":3},{"id":4222,"name":"Veteran
73
+ Scars","rank":3},{"id":4113,"name":"Sorcery","rank":4},{"id":4221,"name":"Unyielding","rank":1},{"id":4252,"name":"Tenacious","rank":4},{"id":4123,"name":"Mental
74
+ Force","rank":3},{"id":4262,"name":"Legendary Guardian","rank":1},{"id":4133,"name":"Arcane
75
+ Mastery","rank":1},{"id":4232,"name":"Juggernaut","rank":1}]},{"name":"Mastery
76
+ Page 1","current":false,"talents":[{"id":4212,"name":"Recovery","rank":2},{"id":4242,"name":"Swiftness","rank":1},{"id":4213,"name":"Enchanted
77
+ Armor","rank":2},{"id":4211,"name":"Block","rank":1},{"id":4244,"name":"Evasive","rank":1},{"id":4333,"name":"Vampirism","rank":1},{"id":4234,"name":"Resistance","rank":3},{"id":4322,"name":"Summoner''s
78
+ Insight","rank":1},{"id":4323,"name":"Strength of Spirit","rank":1},{"id":4222,"name":"Veteran
79
+ Scars","rank":3},{"id":4252,"name":"Tenacious","rank":4},{"id":4262,"name":"Legendary
80
+ Guardian","rank":1},{"id":4312,"name":"Fleet of Foot","rank":3},{"id":4313,"name":"Meditation","rank":3},{"id":4232,"name":"Juggernaut","rank":1},{"id":4233,"name":"Hardiness","rank":2}]},{"name":"Mastery
81
+ Page 2","current":false,"talents":[{"id":4212,"name":"Recovery","rank":2},{"id":4211,"name":"Block","rank":2},{"id":4121,"name":"Expose
82
+ Weakness","rank":1},{"id":4134,"name":"Executioner","rank":3},{"id":4154,"name":"Arcane
83
+ Blade","rank":1},{"id":4222,"name":"Veteran Scars","rank":3},{"id":4113,"name":"Sorcery","rank":4},{"id":4221,"name":"Unyielding","rank":1},{"id":4144,"name":"Dangerous
84
+ Game","rank":1},{"id":4152,"name":"Devastating Strikes","rank":3},{"id":4123,"name":"Mental
85
+ Force","rank":3},{"id":4133,"name":"Arcane Mastery","rank":1},{"id":4143,"name":"Archmage","rank":3},{"id":4232,"name":"Juggernaut","rank":1},{"id":4162,"name":"Havoc","rank":1}]},{"name":"AP","current":true,"talents":[{"id":4212,"name":"Recovery","rank":2},{"id":4211,"name":"Block","rank":2},{"id":4121,"name":"Expose
86
+ Weakness","rank":1},{"id":4134,"name":"Executioner","rank":3},{"id":4154,"name":"Arcane
87
+ Blade","rank":1},{"id":4222,"name":"Veteran Scars","rank":3},{"id":4113,"name":"Sorcery","rank":4},{"id":4221,"name":"Unyielding","rank":1},{"id":4144,"name":"Dangerous
88
+ Game","rank":1},{"id":4152,"name":"Devastating Strikes","rank":3},{"id":4123,"name":"Mental
89
+ Force","rank":3},{"id":4133,"name":"Arcane Mastery","rank":1},{"id":4143,"name":"Archmage","rank":3},{"id":4232,"name":"Juggernaut","rank":1},{"id":4162,"name":"Havoc","rank":1}]}]}'
90
+ http_version:
91
+ recorded_at: Thu, 12 Dec 2013 10:34:21 GMT
92
+ - request:
93
+ method: get
94
+ uri: http://prod.api.pvp.net/api/lol/na/v1.1/summoner/23893133/masteries?api_key=<API_KEY>
95
+ body:
96
+ encoding: US-ASCII
97
+ string: ''
98
+ headers: {}
99
+ response:
100
+ status:
101
+ code: 200
102
+ message: OK
103
+ headers:
104
+ Access-Control-Allow-Headers:
105
+ - Content-Type
106
+ Access-Control-Allow-Methods:
107
+ - GET, POST, DELETE, PUT
108
+ Access-Control-Allow-Origin:
109
+ - ! '*'
110
+ Content-Type:
111
+ - application/json;charset=UTF-8
112
+ Date:
113
+ - Fri, 13 Dec 2013 20:03:18 GMT
114
+ Server:
115
+ - Jetty(9.1.0.v20131115)
116
+ X-Newrelic-App-Data:
117
+ - PxQFWFFSDwQTVVdUBAgAVkYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOA0dYa0kIXlpvTR0RB1cLVwxFZBtEAksIPR4SRg8JWVkEFD8XSEMRDA9YX1IULVVLb00LAhFEB0oLXUsUGnQgbUgTTQNMVBoHT1ZWDQoHUFRaAx0aV0gTBQZTVQJVU1UPAAsLAVRWR2Q=
118
+ Transfer-Encoding:
119
+ - chunked
120
+ Connection:
121
+ - keep-alive
122
+ body:
123
+ encoding: US-ASCII
124
+ string: ! '{"summonerId":23893133,"pages":[{"name":"Mastery Page 4","current":false,"talents":[{"id":4233,"name":"Hardiness","rank":3},{"id":4211,"name":"Block","rank":2},{"id":4121,"name":"Expose
125
+ Weakness","rank":1},{"id":4213,"name":"Enchanted Armor","rank":2},{"id":4244,"name":"Evasive","rank":1},{"id":4234,"name":"Resistance","rank":3},{"id":4222,"name":"Veteran''s
126
+ Scars","rank":3},{"id":4113,"name":"Sorcery","rank":4},{"id":4221,"name":"Unyielding","rank":1},{"id":4252,"name":"Legendary
127
+ Guardian","rank":4},{"id":4123,"name":"Mental Force","rank":3},{"id":4262,"name":"Tenacious","rank":1},{"id":4133,"name":"Arcane
128
+ Mastery","rank":1},{"id":4232,"name":"Juggernaut","rank":1}]},{"name":"Mastery
129
+ Page 1","current":false,"talents":[{"id":4212,"name":"Recovery","rank":2},{"id":4242,"name":"Swiftness","rank":1},{"id":4213,"name":"Enchanted
130
+ Armor","rank":2},{"id":4211,"name":"Block","rank":1},{"id":4244,"name":"Evasive","rank":1},{"id":4333,"name":"Vampirism","rank":1},{"id":4234,"name":"Resistance","rank":3},{"id":4322,"name":"Summoner''s
131
+ Insight","rank":1},{"id":4323,"name":"Strength of Spirit","rank":1},{"id":4222,"name":"Veteran''s
132
+ Scars","rank":3},{"id":4252,"name":"Legendary Guardian","rank":4},{"id":4262,"name":"Tenacious","rank":1},{"id":4312,"name":"Fleet
133
+ of Foot","rank":3},{"id":4313,"name":"Meditation","rank":3},{"id":4232,"name":"Juggernaut","rank":1},{"id":4233,"name":"Hardiness","rank":2}]},{"name":"Mastery
134
+ Page 2","current":false,"talents":[{"id":4212,"name":"Recovery","rank":2},{"id":4211,"name":"Block","rank":2},{"id":4121,"name":"Expose
135
+ Weakness","rank":1},{"id":4134,"name":"Executioner","rank":3},{"id":4154,"name":"Arcane
136
+ Blade","rank":1},{"id":4222,"name":"Veteran''s Scars","rank":3},{"id":4113,"name":"Sorcery","rank":4},{"id":4221,"name":"Unyielding","rank":1},{"id":4144,"name":"Dangerous
137
+ Game","rank":1},{"id":4152,"name":"Devastating Strikes","rank":3},{"id":4123,"name":"Mental
138
+ Force","rank":3},{"id":4133,"name":"Arcane Mastery","rank":1},{"id":4143,"name":"Archmage","rank":3},{"id":4232,"name":"Juggernaut","rank":1},{"id":4162,"name":"Havoc","rank":1}]},{"name":"AP","current":true,"talents":[{"id":4212,"name":"Recovery","rank":2},{"id":4211,"name":"Block","rank":2},{"id":4121,"name":"Expose
139
+ Weakness","rank":1},{"id":4134,"name":"Executioner","rank":3},{"id":4154,"name":"Arcane
140
+ Blade","rank":1},{"id":4222,"name":"Veteran''s Scars","rank":3},{"id":4113,"name":"Sorcery","rank":4},{"id":4221,"name":"Unyielding","rank":1},{"id":4144,"name":"Dangerous
141
+ Game","rank":1},{"id":4152,"name":"Devastating Strikes","rank":3},{"id":4123,"name":"Mental
142
+ Force","rank":3},{"id":4133,"name":"Arcane Mastery","rank":1},{"id":4143,"name":"Archmage","rank":3},{"id":4232,"name":"Juggernaut","rank":1},{"id":4162,"name":"Havoc","rank":1}]}]}'
143
+ http_version:
144
+ recorded_at: Fri, 13 Dec 2013 20:03:19 GMT
145
+ recorded_with: VCR 2.8.0