d3api 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,24 +2,23 @@ module D3api
2
2
  class Artisan < BaseModel
3
3
  attr_accessor :slug, :name, :portrait, :training
4
4
 
5
+ ARTISAN_MAPPING = {
6
+ :slug => 'slug',
7
+ :name => 'name',
8
+ :portrait => 'portrait',
9
+ :training => nil
10
+ }
5
11
  def initialize(region=:us, artisan_type)
6
12
  json_response = find(region, artisan_type)
7
13
 
8
14
  values = super json_response
9
15
 
10
- set_method(values)
16
+ set_method(values, ARTISAN_MAPPING)
11
17
  end
12
18
 
13
19
  private
14
20
  def find(region, artisan_type)
15
21
  get(region, "data/artisan/#{artisan_type}")
16
22
  end
17
-
18
- def set_method(values)
19
- self.slug = values['slug']
20
- self.name = values['name']
21
- self.portrait = values['portrait']
22
- self.training = nil
23
- end
24
23
  end
25
24
  end
@@ -5,5 +5,12 @@ module D3api
5
5
  def initialize(values)
6
6
  JSON.parse(values)
7
7
  end
8
+
9
+ private
10
+ def set_method(values, static_array)
11
+ static_array.each do |key, value|
12
+ self.send("#{key}=", values[value])
13
+ end
14
+ end
8
15
  end
9
16
  end
@@ -1,5 +1,11 @@
1
1
  module D3api
2
2
  class Follower < BaseModel
3
+ FOLLOWER_MAPPINGS = {
4
+ :slug => 'slug',
5
+ :name => 'name',
6
+ :portrait => 'portrait',
7
+ :active_skills => nil
8
+ }
3
9
  attr_accessor :slug, :name, :portrait, :active_skills
4
10
 
5
11
  def initialize(region, follower_type)
@@ -7,19 +13,12 @@ module D3api
7
13
 
8
14
  values = super json_response
9
15
 
10
- set_method(values)
16
+ set_method(values, FOLLOWER_MAPPINGS)
11
17
  end
12
18
 
13
19
  private
14
20
  def find(region, follower_type)
15
21
  get(region, "data/follower/#{follower_type}")
16
22
  end
17
-
18
- def set_method(values)
19
- self.slug = values['slug']
20
- self.name = values['name']
21
- self.portrait = values['portrait']
22
- self.active_skills = nil
23
- end
24
23
  end
25
24
  end
@@ -1,5 +1,13 @@
1
1
  module D3api
2
2
  class Hero < BaseModel
3
+ HERO_MAPPINGS = {
4
+ :id => 'id',
5
+ :name => 'name',
6
+ :hero_class => 'class',
7
+ :level => 'level',
8
+ :hardcore => 'hardcore'
9
+ }
10
+
3
11
  include D3api::Request
4
12
  attr_accessor :id, :name, :hero_class, :gender,
5
13
  :level, :hardcore, :last_updated,
@@ -11,7 +19,8 @@ module D3api
11
19
 
12
20
  values = super json_response
13
21
 
14
- set_method(values)
22
+ set_method(values, HERO_MAPPINGS)
23
+ set_hero(values)
15
24
  end
16
25
 
17
26
  # stats class
@@ -21,13 +30,8 @@ module D3api
21
30
  get(region, "profile/#{battletag_name}-#{battletag_id}/hero/#{hero_id}")
22
31
  end
23
32
 
24
- def set_method(values)
25
- self.id = values['id']
26
- self.name = values['name']
27
- self.hero_class = values['class']
33
+ def set_hero(values)
28
34
  self.gender = determine_gender(values['gender'])
29
- self.level = values['level']
30
- self.hardcore = values['hardcore']
31
35
  self.last_updated = Time.at(values['last-updated'])
32
36
  self.items ||= D3api::EquippedItemSet
33
37
  .new(values['items'])
@@ -41,7 +45,6 @@ module D3api
41
45
  self.followers ||= D3api::HeroFollowerSet
42
46
  .new(values['followers'])
43
47
  .follower_set
44
-
45
48
  self.stats ||= D3api::HeroStats
46
49
  .new(values['stats'])
47
50
  end
@@ -1,5 +1,36 @@
1
1
  module D3api
2
- class HeroStats
2
+ class HeroStats < BaseModel
3
+ STAT_MAPPINGS = {
4
+ :life => 'life',
5
+ :damage => 'damage',
6
+ :attack_speed => 'attackSpeed',
7
+ :armor => 'armor',
8
+ :strength => 'strength',
9
+ :dexterity => 'dexterity',
10
+ :vitality => 'vitality',
11
+ :intelligence => 'intelligence',
12
+ :physical_resist => 'physicalResist',
13
+ :fire_resist => 'fireResist',
14
+ :cold_resist => 'coldResist',
15
+ :lightning_resist => 'lightningResist',
16
+ :poison_resist => 'poisonResist',
17
+ :arcane_resist => 'arcaneResist',
18
+ :crit_damage => 'critDamage',
19
+ :block_chance => 'blockChance',
20
+ :block_amount_min => 'blockAmountMin',
21
+ :block_amount_max => 'blockAmountMax',
22
+ :damage_increase => 'damageIncrease',
23
+ :crit_chance => 'critChance',
24
+ :damage_reduction => 'damageReduction',
25
+ :thorns => 'thorns',
26
+ :life_steal => 'lifeSteal',
27
+ :life_per_kill => 'lifePerKill',
28
+ :gold_find => 'goldFind',
29
+ :magic_find => 'magicFind',
30
+ :life_on_hit => 'lifeOnHit',
31
+ :primary_resource => 'primaryResource',
32
+ :secondary_resource => 'secondaryResource'
33
+ }
3
34
  attr_accessor :life, :damage, :attack_speed, :armor, :strength,
4
35
  :dexterity, :vitality, :intelligence, :physical_resist,
5
36
  :fire_resist, :cold_resist, :lightning_resist, :poison_resist,
@@ -9,40 +40,7 @@ module D3api
9
40
  :life_on_hit, :primary_resource, :secondary_resource
10
41
 
11
42
  def initialize(stat_values)
12
- set_method(stat_values)
13
- end
14
-
15
- private
16
- def set_method(values)
17
- self.life = values['life']
18
- self.damage = values['damage']
19
- self.attack_speed = values['attackSpeed']
20
- self.armor = values['armor']
21
- self.strength = values['strength']
22
- self.dexterity = values['dexterity']
23
- self.vitality = values['vitality']
24
- self.intelligence = values['intelligence']
25
- self.physical_resist = values['physicalResist']
26
- self.fire_resist = values['fireResist']
27
- self.cold_resist = values['coldResist']
28
- self.lightning_resist = values['lightningResist']
29
- self.poison_resist = values['poisonResist']
30
- self.arcane_resist = values['arcaneResist']
31
- self.crit_damage = values['critDamage']
32
- self.block_chance = values['blockChance']
33
- self.block_amount_min = values['blockAmountMin']
34
- self.block_amount_max = values['blockAmountMax']
35
- self.damage_increase = values['damageIncrease']
36
- self.crit_chance = values['critChance']
37
- self.damage_reduction = values['damageReduction']
38
- self.thorns = values['thorns']
39
- self.life_steal = values['lifeSteal']
40
- self.life_per_kill = values['lifePerKill']
41
- self.gold_find = values['goldFind']
42
- self.magic_find = values['magicFind']
43
- self.life_on_hit = values['lifeOnHit']
44
- self.primary_resource = values['primaryResource']
45
- self.secondary_resource = values['secondaryResource']
43
+ set_method(stat_values, STAT_MAPPINGS)
46
44
  end
47
45
  end
48
46
  end
@@ -1,5 +1,15 @@
1
1
  module D3api
2
2
  class Item < BaseModel
3
+ ITEM_MAPPINGS = {
4
+ :name => 'name',
5
+ :icon => 'icon',
6
+ :tooltip_params => 'tooltipParams',
7
+ :display_color => 'displayColor',
8
+ :required_level => 'requiredLevel',
9
+ :item_level => 'itemLevel',
10
+ :bonus_affixes => 'bonusAffixes',
11
+ :attributes => 'attributes'
12
+ }
3
13
  attr_accessor :name, :icon, :tooltip_params, :display_color,
4
14
  :required_level, :item_level, :bonus_affixes,
5
15
  :attributes, :min_dps, :max_dps, :min_attacks_per_second,
@@ -10,7 +20,8 @@ module D3api
10
20
 
11
21
  values = super json_response
12
22
 
13
- set_method(values)
23
+ set_method(values, ITEM_MAPPINGS)
24
+ set_item(values)
14
25
  end
15
26
 
16
27
  private
@@ -18,16 +29,7 @@ module D3api
18
29
  get(region, "data/item/#{item_hash}")
19
30
  end
20
31
 
21
- def set_method(values)
22
- self.name = values['name']
23
- self.icon = values['icon']
24
- self.tooltip_params = values['tooltipParams']
25
- self.display_color = values['displayColor']
26
- self.required_level = values['requiredLevel']
27
- self.item_level = values['itemLevel']
28
- self.bonus_affixes = values['bonusAffixes']
29
- self.attributes = values['attributes']
30
-
32
+ def set_item(values)
31
33
  unless weapon(values)
32
34
  self.min_dps = values['dps']['min']
33
35
  self.max_dps = values['dps']['max']
@@ -1,5 +1,13 @@
1
1
  module D3api
2
- class EquippedItem
2
+ class EquippedItem < BaseModel
3
+ EQUIPPED_ITEM_MAPPINGS = {
4
+ :id => 'id',
5
+ :name => 'name',
6
+ :icon => 'icon',
7
+ :display_color => 'displayColor',
8
+ :tooltip_params => 'tooltipParams'
9
+ }
10
+
3
11
  attr_accessor :location, :name, :icon, :display_color,
4
12
  :tooltip_params, :id
5
13
 
@@ -7,17 +15,8 @@ module D3api
7
15
  location = array[0]
8
16
  attributes = array[1]
9
17
 
10
- set_method(location, attributes)
11
- end
12
-
13
- private
14
- def set_method(location, attributes)
15
18
  self.location = location
16
- self.id = attributes['id']
17
- self.name = attributes['name']
18
- self.icon = attributes['icon']
19
- self.display_color = attributes['displayColor']
20
- self.tooltip_params = attributes['tooltipParams']
19
+ set_method(attributes, EQUIPPED_ITEM_MAPPINGS)
21
20
  end
22
21
  end
23
22
  end
@@ -1,3 +1,3 @@
1
1
  module D3api
2
- VERSION = '1.1.0'
2
+ VERSION = '1.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: d3api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-13 00:00:00.000000000 Z
12
+ date: 2013-01-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -191,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
191
  version: '0'
192
192
  segments:
193
193
  - 0
194
- hash: -2997824699744414621
194
+ hash: 1878087509152130220
195
195
  required_rubygems_version: !ruby/object:Gem::Requirement
196
196
  none: false
197
197
  requirements:
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
200
  version: '0'
201
201
  segments:
202
202
  - 0
203
- hash: -2997824699744414621
203
+ hash: 1878087509152130220
204
204
  requirements: []
205
205
  rubyforge_project:
206
206
  rubygems_version: 1.8.24