covetous 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +35 -2
- data/lib/covetous/profile/career.rb +11 -0
- data/lib/covetous/version.rb +1 -1
- data/spec/covetous/{info → data}/artisan_spec.rb +0 -0
- data/spec/covetous/{info → data}/follower_spec.rb +0 -0
- data/spec/covetous/{info → data}/item_spec.rb +8 -1
- data/spec/covetous/profile/career_spec.rb +25 -0
- data/spec/fixtures/covetous_cassettes/get_hero_response.yml +639 -0
- data/spec/fixtures/covetous_cassettes/sample_hero_data.yml +638 -0
- metadata +13 -9
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Covetous
|
2
2
|
|
3
|
-
|
3
|
+
Covetous is a Ruby Wrapper for the Diablo 3 Web API
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,7 +18,40 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
As of now, Covetous is just a plain ol' gee-- Ruby gem. He is basically just a Ruby wrapper(as I keep repeating...)
|
22
|
+
for the Diablo 3 Web API. After installing, all you have to do is require it where you like and just use it!
|
23
|
+
|
24
|
+
Some example usage would be:
|
25
|
+
|
26
|
+
### Career Profile
|
27
|
+
|
28
|
+
**Note**: Top level keys from the hashes are available as methods for your convenience
|
29
|
+
|
30
|
+
my_profile = Covetous::Profile::Career.new 'corroded-6950'
|
31
|
+
puts my_profile.heroes
|
32
|
+
puts my_profile.kills
|
33
|
+
|
34
|
+
### Hero Profile
|
35
|
+
|
36
|
+
my_hero = Covetous::Profile::Hero.new 'corroded-6950', '12793941'
|
37
|
+
puts my_hero.skills
|
38
|
+
puts my_hero.paragon_level
|
39
|
+
|
40
|
+
### Artisan Data
|
41
|
+
|
42
|
+
artisan = Covetous::Data::Artisan.new 'blacksmith'
|
43
|
+
puts artisan.name
|
44
|
+
|
45
|
+
### Follower Data
|
46
|
+
|
47
|
+
follower = Covetous::Data::Follower.new 'enchantress'
|
48
|
+
puts artisan.name
|
49
|
+
|
50
|
+
### Item Data
|
51
|
+
|
52
|
+
item = Covetous::Data::Item.new 'CkMIz4LU4AoSBwgEFX35Tl0dLWYPvh194Mt2Ha3H5XEdElz0_B2H9XtuIgsIARWFQgMAGAAgCjAJOLYEQABIAVAOYPkEGPrl99QLUAZYAA'
|
53
|
+
puts item.name
|
54
|
+
puts item.attributes
|
22
55
|
|
23
56
|
## Contributing
|
24
57
|
|
@@ -1,3 +1,6 @@
|
|
1
|
+
class NoHeroFoundForProfileError < StandardError
|
2
|
+
end
|
3
|
+
|
1
4
|
module Covetous
|
2
5
|
module Profile
|
3
6
|
class Career < Covetous::Shen
|
@@ -9,6 +12,14 @@ module Covetous
|
|
9
12
|
def hero_names
|
10
13
|
heroes.map{ |hero| hero['name'] }
|
11
14
|
end
|
15
|
+
|
16
|
+
def get_hero_details_of(hero_name)
|
17
|
+
raise NoHeroFoundForProfileError, "No such hero was found under #{battle_tag}" unless hero_names.include? hero_name
|
18
|
+
|
19
|
+
hero_index = hero_names.index hero_name
|
20
|
+
battle_tag_for_api = battle_tag.gsub('#', '-')
|
21
|
+
Covetous::Profile::Hero.new battle_tag_for_api, heroes[hero_index]['id']
|
22
|
+
end
|
12
23
|
end
|
13
24
|
end
|
14
25
|
end
|
data/lib/covetous/version.rb
CHANGED
File without changes
|
File without changes
|
@@ -15,6 +15,13 @@ describe 'Item' do
|
|
15
15
|
it 'should have the correct url' do
|
16
16
|
@my_item.url.must_equal 'http://us.battle.net/api/d3/data/item/CkMIz4LU4AoSBwgEFX35Tl0dLWYPvh194Mt2Ha3H5XEdElz0_B2H9XtuIgsIARWFQgMAGAAgCjAJOLYEQABIAVAOYPkEGPrl99QLUAZYAA'
|
17
17
|
end
|
18
|
-
end
|
19
18
|
|
19
|
+
it 'should have the top level keys available as methods' do
|
20
|
+
top_level_keys = %w{ id name icon displayColor tooltipParams requiredLevel itemLevel bonusAffixes typeName type armor attributes attributesRaw socketEffects salvage gems }
|
21
|
+
|
22
|
+
top_level_keys.each do |tl_key|
|
23
|
+
@my_item.send(tl_key).must_equal @my_item.response[tl_key.camelize(:lower)]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
20
27
|
end
|
@@ -34,4 +34,29 @@ describe 'Career' do
|
|
34
34
|
lambda { @my_profile.foo_attribute }.must_raise NoMethodError
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
describe '#get_hero_details_of' do
|
39
|
+
before do
|
40
|
+
VCR.use_cassette('sample_hero_data') do
|
41
|
+
@sample_hero_data = Covetous::Profile::Hero.new 'corroded-6950', '20042961'
|
42
|
+
end
|
43
|
+
|
44
|
+
VCR.use_cassette('get_hero_response') do
|
45
|
+
@get_hero_response = @my_profile.get_hero_details_of('corrodee')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
after do
|
50
|
+
VCR.eject_cassette
|
51
|
+
VCR.eject_cassette
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should return a hero object' do
|
55
|
+
@get_hero_response.must_be_instance_of Covetous::Profile::Hero
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should raise a NoHeroFoundForProfileError when given a wrong hero name' do
|
59
|
+
lambda { @my_profile.get_hero_details_of('multipleman') }.must_raise NoHeroFoundForProfileError
|
60
|
+
end
|
61
|
+
end
|
37
62
|
end
|