blizzard-community-api 1.0.0

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.
Files changed (41) hide show
  1. data/Gemfile +15 -0
  2. data/Gemfile.lock +33 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.rdoc +40 -0
  5. data/Rakefile +46 -0
  6. data/VERSION +1 -0
  7. data/lib/api_enums.rb +65 -0
  8. data/lib/api_request.rb +133 -0
  9. data/lib/api_requestor.rb +5 -0
  10. data/lib/arena_team_request.rb +23 -0
  11. data/lib/authorized_api_request.rb +62 -0
  12. data/lib/blizzard-community-api.rb +101 -0
  13. data/lib/character_classes_request.rb +11 -0
  14. data/lib/character_profile_request.rb +33 -0
  15. data/lib/character_races_request.rb +11 -0
  16. data/lib/configuration.rb +67 -0
  17. data/lib/current_auctions_request.rb +21 -0
  18. data/lib/guild_perks_request.rb +11 -0
  19. data/lib/guild_profile_request.rb +33 -0
  20. data/lib/guild_rewards_request.rb +11 -0
  21. data/lib/item_classes_request.rb +11 -0
  22. data/lib/item_request.rb +21 -0
  23. data/lib/realm_status_request.rb +28 -0
  24. data/spec/api_request_spec.rb +99 -0
  25. data/spec/api_spec.rb +84 -0
  26. data/spec/arena_team_request_spec.rb +46 -0
  27. data/spec/authorized_api_request_spec.rb +78 -0
  28. data/spec/authorized_spec.rb +89 -0
  29. data/spec/character_classes_request_spec.rb +38 -0
  30. data/spec/character_profile_request_spec.rb +92 -0
  31. data/spec/character_races_spec.rb +38 -0
  32. data/spec/current_auctions_request_spec.rb +41 -0
  33. data/spec/guild_perks_request_spec.rb +33 -0
  34. data/spec/guild_profile_request_spec.rb +59 -0
  35. data/spec/guild_rewards_request_spec.rb +54 -0
  36. data/spec/item_classes_request_spec.rb +36 -0
  37. data/spec/item_request_spec.rb +74 -0
  38. data/spec/realm_status_request_spec.rb +57 -0
  39. data/spec/rspec_helper.rb +8 -0
  40. data/spec/rspec_matchers.rb +18 -0
  41. metadata +92 -0
@@ -0,0 +1,41 @@
1
+ require "rspec_helper"
2
+ require "../lib/current_auctions_request"
3
+
4
+ include WOW
5
+
6
+ describe CurrentAuctionsRequest do
7
+ describe "::new" do
8
+ it "should create a new CurrentAuctionsRequest if valid" do
9
+ request = CurrentAuctionsRequest.new("Draenor")
10
+ request.should be_instance_of(CurrentAuctionsRequest)
11
+ request.realm.should == "Draenor"
12
+ end
13
+ it "should require a non-empty string for realm" do
14
+ lambda{CurrentAuctionsRequest.new("")}.should raise_error(SyntaxError)
15
+ lambda{CurrentAuctionsRequest.new(nil)}.should raise_error(SyntaxError)
16
+ lambda{CurrentAuctionsRequest.new(5)}.should raise_error(SyntaxError)
17
+ end
18
+ end
19
+ describe "#query" do
20
+ it "should be empty" do
21
+ request = CurrentAuctionsRequest.new("Draenor")
22
+ request.query.should(be == {})
23
+ end
24
+ end
25
+ describe "#uri" do
26
+ it "should be created dynamically" do
27
+ request = CurrentAuctionsRequest.new("Draenor")
28
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/auction/data/draenor")
29
+ end
30
+ end
31
+ describe "#invoke" do
32
+ it "should return a valid guild record", :live => true do
33
+ request = CurrentAuctionsRequest.new("Draenor")
34
+ response = request.invoke
35
+ response.should(be_a(Hash))
36
+ response["files"].should(be_a(Array))
37
+ response["files"][0]["url"].should(be_a(String))
38
+ response["files"][0]["lastModified"].should(be_a(Numeric))
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ require "rspec_helper"
2
+ require "../lib/guild_perks_request"
3
+
4
+ include WOW
5
+
6
+ describe GuildPerksRequest do
7
+ describe "::new" do
8
+ it "should create a new GuildPerksRequest if valid" do
9
+ request = GuildPerksRequest.new()
10
+ request.should be_instance_of(GuildPerksRequest)
11
+ end
12
+ end
13
+ describe "#query" do
14
+ it "should be empty" do
15
+ request = GuildPerksRequest.new()
16
+ request.query.should(be == {})
17
+ end
18
+ end
19
+ describe "#uri" do
20
+ it "should be created dynamically" do
21
+ request = GuildPerksRequest.new()
22
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/data/guild/perks")
23
+ end
24
+ end
25
+ describe "#invoke" do
26
+ it "should return a valid item record", :live => true do
27
+ request = GuildPerksRequest.new()
28
+ response = request.invoke
29
+ response.should(be_a(Hash))
30
+ response["perks"].should(be_a(Array))
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,59 @@
1
+ require "rspec_helper"
2
+ require "../lib/guild_profile_request"
3
+
4
+ include WOW
5
+
6
+ describe GuildProfileRequest do
7
+ describe "::new" do
8
+ it "should create a new GuildProfileRequest if valid" do
9
+ request = GuildProfileRequest.new("Little Urban Elites","Draenor",:fields => [:members, :achievements])
10
+ request.should be_instance_of(GuildProfileRequest)
11
+ request.name.should == "Little Urban Elites"
12
+ request.realm.should == "Draenor"
13
+ request.fields.should == [:members, :achievements]
14
+ end
15
+ it "should require a non-empty string for name and realm" do
16
+ lambda{GuildProfileRequest.new("", "realm")}.should raise_error(SyntaxError)
17
+ lambda{GuildProfileRequest.new(nil, "realm")}.should raise_error(SyntaxError)
18
+ lambda{GuildProfileRequest.new("name", "")}.should raise_error(SyntaxError)
19
+ lambda{GuildProfileRequest.new("name", nil)}.should raise_error(SyntaxError)
20
+ lambda{GuildProfileRequest.new(5, "")}.should raise_error(SyntaxError)
21
+ end
22
+ it "should require an array of fields if fields are supplied" do
23
+ lambda{GuildProfileRequest.new("Little Urban Elites","Draenor",:fields => :members)}.should raise_error(SyntaxError)
24
+ lambda{GuildProfileRequest.new("Little Urban Elites","Draenor",:fields => { :members => false, :achievements => true })}.should raise_error(SyntaxError)
25
+ GuildProfileRequest.new("Little Urban Elites","Dreanor",:fields => nil).should be_instance_of(GuildProfileRequest)
26
+ GuildProfileRequest.new("Little Urban Elites","Dreanor").should be_instance_of(GuildProfileRequest)
27
+ end
28
+ it "should return additional information if fields collection contains token", :live => true do
29
+ request = GuildProfileRequest.new("Little Urban Elites","Draenor",:fields => [ :members, :achievements ])
30
+ response = request.invoke
31
+ response.should(be_a(Hash))
32
+ response["members"].should(be_a(Array))
33
+ response["achievements"].should(be_a(Hash))
34
+ end
35
+ end
36
+ describe "#query" do
37
+ it "should be created dynamically" do
38
+ request = GuildProfileRequest.new("Little Urban Elites","Draenor",:fields => [:members, :achievements])
39
+ request.query.should == {"fields" => [ :members, :achievements ]}
40
+ end
41
+ end
42
+ describe "#uri" do
43
+ it "should be created dynamically" do
44
+ request = GuildProfileRequest.new("Little Urban Elites","Draenor",:fields => [:members, :achievements])
45
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/guild/Draenor/Little%20Urban%20Elites?fields=members,achievements")
46
+ end
47
+ end
48
+ describe "#invoke" do
49
+ it "should return a valid guild record", :live => true do
50
+ request = GuildProfileRequest.new("Little Urban Elites","Draenor")
51
+ response = request.invoke
52
+ response.should(be_a(Hash))
53
+ response["name"].should(be_a(String))
54
+ response["level"].should(be_a(Integer))
55
+ response["side"].should(be_a(Numeric))
56
+ response["achievementPoints"].should(be_a(Integer))
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,54 @@
1
+ require "rspec_helper"
2
+ require "../lib/guild_rewards_request"
3
+
4
+ include WOW
5
+
6
+ describe GuildRewardsRequest do
7
+ describe "::new" do
8
+ it "should create a new GuildRewardsRequest if valid" do
9
+ request = GuildRewardsRequest.new()
10
+ request.should be_instance_of(GuildRewardsRequest)
11
+ end
12
+ end
13
+ describe "#query" do
14
+ it "should be empty" do
15
+ request = GuildRewardsRequest.new()
16
+ request.query.should(be == {})
17
+ end
18
+ end
19
+ describe "#uri" do
20
+ it "should be created dynamically" do
21
+ request = GuildRewardsRequest.new()
22
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/data/guild/rewards")
23
+ end
24
+ end
25
+ describe "#invoke" do
26
+ it "should return a valid item record", :live => true do
27
+ request = GuildRewardsRequest.new()
28
+ response = request.invoke
29
+ response.should(be_a(Hash))
30
+ response["rewards"].should(be_a(Array))
31
+ response["rewards"][0].should(be_a(Hash))
32
+ response["rewards"][0]["minGuildLevel"].should(be_a(Integer))
33
+ response["rewards"][0]["minGuildRepLevel"].should(be_a(Integer))
34
+ response["rewards"][0]["achievement"].should(be_a(Hash))
35
+ response["rewards"][0]["achievement"]["id"].should(be_a(Integer))
36
+ response["rewards"][0]["achievement"]["title"].should(be_a(String))
37
+ response["rewards"][0]["achievement"]["points"].should(be_a(Integer))
38
+ response["rewards"][0]["achievement"]["description"].should(be_a(String))
39
+ response["rewards"][0]["achievement"]["reward"].should(be_a(String))
40
+ response["rewards"][0]["achievement"]["rewardItem"].should(be_a(Hash))
41
+ response["rewards"][0]["achievement"]["rewardItem"]["id"].should(be_a(Integer))
42
+ response["rewards"][0]["achievement"]["rewardItem"]["name"].should(be_a(String))
43
+ response["rewards"][0]["achievement"]["rewardItem"]["icon"].should(be_a(String))
44
+ response["rewards"][0]["achievement"]["rewardItem"]["quality"].should(be_a(Integer))
45
+ response["rewards"][0]["achievement"]["rewardItem"]["tooltipParams"].should(be_a(Hash))
46
+ response["rewards"][0]["item"].should(be_a(Hash))
47
+ response["rewards"][0]["item"]["id"].should(be_a(Integer))
48
+ response["rewards"][0]["item"]["name"].should(be_a(String))
49
+ response["rewards"][0]["item"]["icon"].should(be_a(String))
50
+ response["rewards"][0]["item"]["quality"].should(be_a(Integer))
51
+ response["rewards"][0]["item"]["tooltipParams"].should(be_a(Hash))
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,36 @@
1
+ require "rspec_helper"
2
+ require "../lib/item_classes_request"
3
+
4
+ include WOW
5
+
6
+ describe ItemClassesRequest do
7
+ describe "::new" do
8
+ it "should create a new ItemClassesRequest if valid" do
9
+ request = ItemClassesRequest.new()
10
+ request.should be_instance_of(ItemClassesRequest)
11
+ end
12
+ end
13
+ describe "#query" do
14
+ it "should be empty" do
15
+ request = ItemClassesRequest.new()
16
+ request.query.should(be == {})
17
+ end
18
+ end
19
+ describe "#uri" do
20
+ it "should be created dynamically" do
21
+ request = ItemClassesRequest.new()
22
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/data/item/classes")
23
+ end
24
+ end
25
+ describe "#invoke" do
26
+ it "should return a valid item record", :live => true do
27
+ request = ItemClassesRequest.new()
28
+ response = request.invoke
29
+ response.should(be_a(Hash))
30
+ response["classes"].should(be_a(Array))
31
+ response["classes"][0].should(be_a(Hash))
32
+ response["classes"][0]["class"].should(be_a(Integer))
33
+ response["classes"][0]["name"].should(be_a(String))
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,74 @@
1
+ require "rspec_helper"
2
+ require "../lib/item_request"
3
+
4
+ include WOW
5
+
6
+ describe ItemRequest do
7
+ describe "::new" do
8
+ it "should create a new ItemRequest if valid" do
9
+ request = ItemRequest.new(78473)
10
+ request.should be_instance_of(ItemRequest)
11
+ request.item_id.should == 78473
12
+ end
13
+ it "should require an integer for item_id" do
14
+ lambda{ItemRequest.new("")}.should raise_error(SyntaxError)
15
+ lambda{ItemRequest.new(nil)}.should raise_error(SyntaxError)
16
+ lambda{ItemRequest.new(true)}.should raise_error(SyntaxError)
17
+ end
18
+ end
19
+ describe "#query" do
20
+ it "should be empty" do
21
+ request = ItemRequest.new(78473)
22
+ request.query.should(be == {})
23
+ end
24
+ end
25
+ describe "#uri" do
26
+ it "should be created dynamically" do
27
+ request = ItemRequest.new(78473)
28
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/item/78473")
29
+ end
30
+ end
31
+ describe "#invoke" do
32
+ it "should return a valid item record", :live => true do
33
+ request = ItemRequest.new(78473)
34
+ response = request.invoke
35
+ response.should(be_a(Hash))
36
+ response["id"].should(be_a(Integer))
37
+ response["disenchantingSkillRank"].should(be_a(Integer))
38
+ response["description"].should(be_a(String))
39
+ response["name"].should(be_a(String))
40
+ response["stackable"].should(be_a(Integer))
41
+ response["itemBind"].should(be_a(Integer))
42
+ response["bonusStats"].should(be_a(Array))
43
+ response["itemSpells"].should(be_a(Array))
44
+ response["buyPrice"].should(be_a(Integer))
45
+ response["itemClass"].should(be_a(Integer))
46
+ response["itemSubClass"].should(be_a(Integer))
47
+ response["containerSlots"].should(be_a(Integer))
48
+ response["weaponInfo"].should(be_a(Hash))
49
+ response["weaponInfo"]["damage"].should(be_a(Hash))
50
+ response["weaponInfo"]["damage"]["min"].should(be_a(Integer))
51
+ response["weaponInfo"]["damage"]["max"].should(be_a(Integer))
52
+ response["weaponInfo"]["weaponSpeed"].should(be_a(Float))
53
+ response["weaponInfo"]["dps"].should(be_a(Float))
54
+ response["inventoryType"].should(be_a(Integer))
55
+ response["equippable"].should(be_boolean)
56
+ response["itemLevel"].should(be_a(Integer))
57
+ response["maxCount"].should(be_a(Integer))
58
+ response["maxDurability"].should(be_a(Integer))
59
+ response["minFactionId"].should(be_a(Integer))
60
+ response["minReputation"].should(be_a(Integer))
61
+ response["quality"].should(be_a(Integer))
62
+ response["sellPrice"].should(be_a(Integer))
63
+ response["requiredLevel"].should(be_a(Integer))
64
+ response["requiredSkill"].should(be_a(Integer))
65
+ response["requiredSkillRank"].should(be_a(Integer))
66
+ response["itemSource"].should(be_a(Hash))
67
+ response["itemSource"]["sourceId"].should(be_a(Integer))
68
+ response["itemSource"]["sourceType"].should(be_a(String))
69
+ response["baseArmor"].should(be_a(Integer))
70
+ response["hasSockets"].should(be_boolean)
71
+ response["isAuctionable"].should(be_boolean)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,57 @@
1
+ require "rspec_helper"
2
+ require "../lib/realm_status_request"
3
+
4
+ include WOW
5
+
6
+ describe RealmStatusRequest do
7
+
8
+ describe "::new" do
9
+ it "should create a new RealmStatusRequest if valid" do
10
+ request = RealmStatusRequest.new()
11
+ request.should be_instance_of(RealmStatusRequest)
12
+ request.realms.should(be == [])
13
+ end
14
+ it "should require an array of realms if realms are provided" do
15
+ lambda{RealmStatusRequest.new(:realms => "Little Urban Elites")}.should raise_error(SyntaxError)
16
+ RealmStatusRequest.new(:realms => nil).should be_instance_of(RealmStatusRequest)
17
+ end
18
+ it "should limit realms when realm collection is provided", :broken => true do
19
+ request = RealmStatusRequest.new(:realms => [ "Little Urban Elites" ])
20
+ response = request.invoke
21
+ response.should(be_a(Hash))
22
+ response["realms"].should(be_a(Array))
23
+ response["realms"].length.should(be == 1)
24
+ end
25
+ end
26
+
27
+ describe "#query" do
28
+ it "should be created dynamically" do
29
+ request = RealmStatusRequest.new(:realms => [ "Little Urban Elites", "Hoss" ])
30
+ request.query.should == {"realms" => [ "Little Urban Elites", "Hoss" ]}
31
+ end
32
+ end
33
+
34
+ describe "#uri" do
35
+ it "should be created dynamically" do
36
+ request = RealmStatusRequest.new(:realms => [ "Hoss" ])
37
+ request.uri.should == URI.parse("http://us.battle.net/api/wow/realm/status?realms=Hoss")
38
+ end
39
+ end
40
+
41
+ describe "#invoke" do
42
+ it "should return all realms by default", :live => true do
43
+ request = RealmStatusRequest.new()
44
+ response = request.invoke
45
+ response.should(be_a(Hash))
46
+ response["realms"].should(be_a(Array))
47
+ response["realms"].length.should(be > 1)
48
+ response["realms"][0]["type"].should(be_a(String))
49
+ response["realms"][0]["queue"].should(be_boolean)
50
+ response["realms"][0]["status"].should(be_boolean)
51
+ response["realms"][0]["population"].should(be_a(String))
52
+ response["realms"][0]["name"].should(be_a(String))
53
+ response["realms"][0]["slug"].should(be_a(String))
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,8 @@
1
+ require "rspec"
2
+ require "rspec_matchers"
3
+
4
+ RSpec.configure do |c|
5
+ c.filter_run_excluding(:live => true)
6
+ c.filter_run_excluding(:broken => true)
7
+ c.include(RspecMatchers)
8
+ end
@@ -0,0 +1,18 @@
1
+ module RspecMatchers
2
+ class BeBoolean
3
+ def matches?(target)
4
+ @target = target
5
+ (@target.is_a?(TrueClass) || @target.is_a?(FalseClass))
6
+ end
7
+ def failure_message
8
+ "expected #{@target.inspect} to be boolean class"
9
+ end
10
+ def negative_failure_message
11
+ "expected #{@target.inspect} not to be a boolean class"
12
+ end
13
+ end
14
+
15
+ def be_boolean
16
+ BeBoolean.new
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blizzard-community-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Scholz
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-10 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: A ruby implementation of standard and authorized (OpenAuth) calls to
15
+ the Blizzard Community API
16
+ email: eric.scholz@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files:
20
+ - README.rdoc
21
+ files:
22
+ - lib/api_enums.rb
23
+ - lib/api_request.rb
24
+ - lib/api_requestor.rb
25
+ - lib/arena_team_request.rb
26
+ - lib/authorized_api_request.rb
27
+ - lib/blizzard-community-api.rb
28
+ - lib/character_classes_request.rb
29
+ - lib/character_profile_request.rb
30
+ - lib/character_races_request.rb
31
+ - lib/configuration.rb
32
+ - lib/current_auctions_request.rb
33
+ - lib/guild_perks_request.rb
34
+ - lib/guild_profile_request.rb
35
+ - lib/guild_rewards_request.rb
36
+ - lib/item_classes_request.rb
37
+ - lib/item_request.rb
38
+ - lib/realm_status_request.rb
39
+ - Gemfile
40
+ - Gemfile.lock
41
+ - LICENSE.txt
42
+ - Rakefile
43
+ - README.rdoc
44
+ - VERSION
45
+ - spec/api_request_spec.rb
46
+ - spec/api_spec.rb
47
+ - spec/arena_team_request_spec.rb
48
+ - spec/authorized_api_request_spec.rb
49
+ - spec/authorized_spec.rb
50
+ - spec/character_classes_request_spec.rb
51
+ - spec/character_profile_request_spec.rb
52
+ - spec/character_races_spec.rb
53
+ - spec/current_auctions_request_spec.rb
54
+ - spec/guild_perks_request_spec.rb
55
+ - spec/guild_profile_request_spec.rb
56
+ - spec/guild_rewards_request_spec.rb
57
+ - spec/item_classes_request_spec.rb
58
+ - spec/item_request_spec.rb
59
+ - spec/realm_status_request_spec.rb
60
+ - spec/rspec_helper.rb
61
+ - spec/rspec_matchers.rb
62
+ homepage: http://github.com/escholz/blizzard-community-api-rubygem
63
+ licenses: []
64
+ post_install_message:
65
+ rdoc_options:
66
+ - --line-numbers
67
+ - --inline-source
68
+ - --title
69
+ - Blizzard Community API RubyGem
70
+ - --main
71
+ - README.rdoc
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '1.2'
86
+ requirements: []
87
+ rubyforge_project: blizzard-community-api
88
+ rubygems_version: 1.8.12
89
+ signing_key:
90
+ specification_version: 3
91
+ summary: Blizzard Community API RubyGem
92
+ test_files: []