d3api 1.1.0 → 1.1.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.
@@ -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