starcraft2 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fixtures/cassettes/achievements.yml +5640 -6738
- data/fixtures/cassettes/grandmaster.yml +348 -3517
- data/fixtures/cassettes/ladder_148200.yml +8 -3177
- data/fixtures/cassettes/rewards.yml +4095 -4102
- data/lib/starcraft2/achievement.rb +1 -3
- data/lib/starcraft2/character.rb +1 -3
- data/lib/starcraft2/client.rb +10 -10
- data/lib/starcraft2/icon.rb +9 -0
- data/lib/starcraft2/loader.rb +3 -1
- data/lib/starcraft2/member.rb +1 -4
- data/lib/starcraft2/reward.rb +1 -3
- data/lib/starcraft2/utils.rb +21 -0
- data/spec/starcraft2/achievement_spec.rb +15 -5
- data/spec/starcraft2/client_spec.rb +3 -3
- data/spec/starcraft2/icon_spec.rb +41 -0
- data/spec/starcraft2/ladder_spec.rb +1 -1
- data/spec/starcraft2/reward_spec.rb +15 -5
- data/spec/starcraft2/utils_spec.rb +28 -0
- data/starcraft2.gemspec +1 -1
- metadata +5 -3
- data/lib/starcraft2/string_utils.rb +0 -11
- data/spec/starcraft2/string_utils_spec.rb +0 -9
@@ -3,9 +3,7 @@ module Starcraft2
|
|
3
3
|
attr_accessor :title, :description, :achievement_id, :category_id, :points, :icon
|
4
4
|
|
5
5
|
def initialize(options = {})
|
6
|
-
|
7
|
-
self.send(:"#{StringUtils.underscore(k.to_s)}=", v)
|
8
|
-
end
|
6
|
+
Utils.load(self, options, {:icon => Icon})
|
9
7
|
end
|
10
8
|
|
11
9
|
def self.build(achievements_json)
|
data/lib/starcraft2/character.rb
CHANGED
data/lib/starcraft2/client.rb
CHANGED
@@ -15,15 +15,15 @@ module Starcraft2
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def achievements
|
18
|
-
Achievement.build(
|
18
|
+
Achievement.build(achievements_json)
|
19
19
|
end
|
20
20
|
|
21
21
|
def rewards
|
22
|
-
Reward.build(
|
22
|
+
Reward.build(rewards_json)
|
23
23
|
end
|
24
24
|
|
25
25
|
def ladder(id)
|
26
|
-
Ladder.build(
|
26
|
+
Ladder.build(ladder_json(id))
|
27
27
|
end
|
28
28
|
|
29
29
|
def grandmaster_ladder
|
@@ -36,32 +36,32 @@ module Starcraft2
|
|
36
36
|
|
37
37
|
private
|
38
38
|
|
39
|
-
def
|
39
|
+
def achievements_json
|
40
40
|
HTTParty.get(achievements_url).body
|
41
41
|
end
|
42
42
|
|
43
43
|
def achievements_url
|
44
|
-
'
|
44
|
+
'https://' + host + ACHIEVEMENTS_PATH + locale_param
|
45
45
|
end
|
46
46
|
|
47
|
-
def
|
47
|
+
def rewards_json
|
48
48
|
HTTParty.get(rewards_url).body
|
49
49
|
end
|
50
50
|
|
51
51
|
def rewards_url
|
52
|
-
'
|
52
|
+
'https://' + host + REWARDS_PATH + locale_param
|
53
53
|
end
|
54
54
|
|
55
|
-
def
|
55
|
+
def ladder_json(id)
|
56
56
|
HTTParty.get(ladder_url(id)).body
|
57
57
|
end
|
58
58
|
|
59
59
|
def ladder_url(id)
|
60
|
-
'
|
60
|
+
'https://' + host + LADDER_PATH + id.to_s + locale_param
|
61
61
|
end
|
62
62
|
|
63
63
|
def locale_param
|
64
64
|
locale.nil? ? '' : "?locale=#{locale}"
|
65
65
|
end
|
66
66
|
end
|
67
|
-
end
|
67
|
+
end
|
data/lib/starcraft2/loader.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'ostruct'
|
1
2
|
require 'httparty'
|
2
3
|
require 'json'
|
3
4
|
|
4
|
-
require File.join('starcraft2', '
|
5
|
+
require File.join('starcraft2', 'utils')
|
6
|
+
require File.join('starcraft2', 'icon')
|
5
7
|
require File.join('starcraft2', 'client')
|
6
8
|
require File.join('starcraft2', 'achievement')
|
7
9
|
require File.join('starcraft2', 'reward')
|
data/lib/starcraft2/member.rb
CHANGED
@@ -4,10 +4,7 @@ module Starcraft2
|
|
4
4
|
:losses, :highest_rank, :previous_rank, :favorite_race_p1, :favorite_race_p2, :favorite_race_p3, :favorite_race_p4
|
5
5
|
|
6
6
|
def initialize(options = {})
|
7
|
-
|
8
|
-
v = Starcraft2::Character.new(v) if k.to_sym == :character
|
9
|
-
self.send(:"#{StringUtils.underscore(k.to_s)}=", v)
|
10
|
-
end
|
7
|
+
Utils.load(self, options, {:character => Character})
|
11
8
|
end
|
12
9
|
end
|
13
10
|
end
|
data/lib/starcraft2/reward.rb
CHANGED
@@ -3,9 +3,7 @@ module Starcraft2
|
|
3
3
|
attr_accessor :title, :id, :icon, :achievement_id
|
4
4
|
|
5
5
|
def initialize(options = {})
|
6
|
-
|
7
|
-
self.send(:"#{StringUtils.underscore(k.to_s)}=", v)
|
8
|
-
end
|
6
|
+
Utils.load(self, options, {:icon => Icon})
|
9
7
|
end
|
10
8
|
|
11
9
|
def self.build(rewards_json)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Starcraft2
|
2
|
+
class Utils
|
3
|
+
def self.underscore(string)
|
4
|
+
word = string.dup
|
5
|
+
word.gsub!(/::/, '/')
|
6
|
+
word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
7
|
+
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
8
|
+
word.tr!('-', '_')
|
9
|
+
word.downcase!
|
10
|
+
word
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.load(klass, options, class_map = {})
|
14
|
+
options.each do |k, v|
|
15
|
+
v = class_map[k.to_sym].new(v) if class_map.keys.include?(k.to_sym)
|
16
|
+
|
17
|
+
klass.send(:"#{self.underscore(k.to_s)}=", v)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -6,7 +6,7 @@ describe Starcraft2::Achievement do
|
|
6
6
|
|
7
7
|
before do
|
8
8
|
VCR.use_cassette('achievements') do
|
9
|
-
@achievements_json = HTTParty.get('
|
9
|
+
@achievements_json = HTTParty.get('https://us.battle.net/api/sc2/data/achievements').body
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -27,7 +27,7 @@ describe Starcraft2::Achievement do
|
|
27
27
|
|
28
28
|
it 'should import the first achievement' do
|
29
29
|
VCR.use_cassette('achievements') do
|
30
|
-
@achievement = Starcraft2::Achievement.build(HTTParty.get('
|
30
|
+
@achievement = Starcraft2::Achievement.build(HTTParty.get('https://us.battle.net/api/sc2/data/achievements').body).first
|
31
31
|
end
|
32
32
|
|
33
33
|
@achievement.title.should == 'FFA Destroyer'
|
@@ -35,7 +35,12 @@ describe Starcraft2::Achievement do
|
|
35
35
|
@achievement.achievement_id.should == 91475320766632
|
36
36
|
@achievement.category_id.should == 4325391
|
37
37
|
@achievement.points.should == 10
|
38
|
-
@achievement.icon.should ==
|
38
|
+
@achievement.icon.x.should == 0
|
39
|
+
@achievement.icon.y.should == -375
|
40
|
+
@achievement.icon.w.should == 75
|
41
|
+
@achievement.icon.h.should == 75
|
42
|
+
@achievement.icon.offset.should == 45
|
43
|
+
@achievement.icon.url.should == 'http://media.blizzard.com/sc2/achievements/5-75.jpg'
|
39
44
|
end
|
40
45
|
|
41
46
|
it 'should store the title' do
|
@@ -64,8 +69,13 @@ describe Starcraft2::Achievement do
|
|
64
69
|
end
|
65
70
|
|
66
71
|
it 'should store the icon data' do
|
67
|
-
@options = {:icon => {'x' => 1, 'y' => 2, 'w' => 3, 'h' => 4, 'offset' => 0, 'url' => '
|
68
|
-
achievement.icon.should ==
|
72
|
+
@options = {:icon => {'x' => 1, 'y' => 2, 'w' => 3, 'h' => 4, 'offset' => 0, 'url' => 'https://example.com'}}
|
73
|
+
achievement.icon.x.should == 1
|
74
|
+
achievement.icon.y.should == 2
|
75
|
+
achievement.icon.w.should == 3
|
76
|
+
achievement.icon.h.should == 4
|
77
|
+
achievement.icon.offset.should == 0
|
78
|
+
achievement.icon.url.should == 'https://example.com'
|
69
79
|
end
|
70
80
|
end
|
71
81
|
end
|
@@ -106,9 +106,9 @@ describe Starcraft2::Client do
|
|
106
106
|
member.character.clan_tag == ''
|
107
107
|
member.character.profile_path == '/profile/2778732/1/lIlIlIlIlIlI/'
|
108
108
|
|
109
|
-
member.points.should ==
|
110
|
-
member.wins.should ==
|
111
|
-
member.losses.should ==
|
109
|
+
member.points.should == 2374.0
|
110
|
+
member.wins.should == 253
|
111
|
+
member.losses.should == 102
|
112
112
|
member.join_timestamp.should == 1373859935
|
113
113
|
member.highest_rank.should == 1
|
114
114
|
member.previous_rank.should == 1
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Starcraft2::Icon do
|
4
|
+
describe '.initialize' do
|
5
|
+
let(:icon) { Starcraft2::Icon.new(@options) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
@options = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should store x' do
|
12
|
+
@options = {:x => 5}
|
13
|
+
icon.x.should == 5
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should store y' do
|
17
|
+
@options = {:y => 6}
|
18
|
+
icon.y.should == 6
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should store w' do
|
22
|
+
@options = {:w => 7}
|
23
|
+
icon.w.should == 7
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should store h' do
|
27
|
+
@options = {:h => 8}
|
28
|
+
icon.h.should == 8
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should store the offset' do
|
32
|
+
@options = {:offset => 0}
|
33
|
+
icon.offset.should == 0
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should store the url' do
|
37
|
+
@options = {:url => 'https://example.com'}
|
38
|
+
icon.url.should == 'https://example.com'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -8,7 +8,7 @@ describe Starcraft2::Ladder do
|
|
8
8
|
|
9
9
|
before do
|
10
10
|
VCR.use_cassette("ladder_#{id}") do
|
11
|
-
@raw_ladder_data = HTTParty.get("
|
11
|
+
@raw_ladder_data = HTTParty.get("https://us.battle.net/api/sc2/ladder/#{id}").body
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -6,7 +6,7 @@ describe Starcraft2::Reward do
|
|
6
6
|
|
7
7
|
before do
|
8
8
|
VCR.use_cassette('rewards') do
|
9
|
-
@raw_reward_data = HTTParty.get('
|
9
|
+
@raw_reward_data = HTTParty.get('https://us.battle.net/api/sc2/data/rewards').body
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -27,12 +27,17 @@ describe Starcraft2::Reward do
|
|
27
27
|
|
28
28
|
it 'should import the first reward' do
|
29
29
|
VCR.use_cassette('rewards') do
|
30
|
-
@reward = Starcraft2::Reward.build(HTTParty.get('
|
30
|
+
@reward = Starcraft2::Reward.build(HTTParty.get('https://us.battle.net/api/sc2/data/rewards').body).first
|
31
31
|
end
|
32
32
|
|
33
33
|
@reward.title.should == 'Kachinsky'
|
34
34
|
@reward.id.should == 2951153716
|
35
|
-
@reward.icon.should ==
|
35
|
+
@reward.icon.x.should == 0
|
36
|
+
@reward.icon.y.should == 0
|
37
|
+
@reward.icon.w.should == 90
|
38
|
+
@reward.icon.h.should == 90
|
39
|
+
@reward.icon.offset.should == 0
|
40
|
+
@reward.icon.url.should == 'http://media.blizzard.com/sc2/portraits/0-90.jpg'
|
36
41
|
@reward.achievement_id.should == 0
|
37
42
|
end
|
38
43
|
|
@@ -47,8 +52,13 @@ describe Starcraft2::Reward do
|
|
47
52
|
end
|
48
53
|
|
49
54
|
it 'should store the icon data' do
|
50
|
-
@options = {:icon => {'x' => 1, 'y' => 2, 'w' => 3, 'h' => 4, 'offset' => 0, 'url' => '
|
51
|
-
reward.icon.should ==
|
55
|
+
@options = {:icon => {'x' => 1, 'y' => 2, 'w' => 3, 'h' => 4, 'offset' => 0, 'url' => 'https://example.com'}}
|
56
|
+
reward.icon.x.should == 1
|
57
|
+
reward.icon.y.should == 2
|
58
|
+
reward.icon.w.should == 3
|
59
|
+
reward.icon.h.should == 4
|
60
|
+
reward.icon.offset.should == 0
|
61
|
+
reward.icon.url.should == 'https://example.com'
|
52
62
|
end
|
53
63
|
|
54
64
|
it 'should store the achievement id' do
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Starcraft2::Utils do
|
4
|
+
describe '#underscore' do
|
5
|
+
it 'should underscore a string' do
|
6
|
+
Starcraft2::Utils.underscore('FooBar').should == 'foo_bar'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#load' do
|
11
|
+
it 'should load attributes in a class' do
|
12
|
+
icon = Starcraft2::Icon.new()
|
13
|
+
icon.x.should == nil
|
14
|
+
icon.y.should == nil
|
15
|
+
Starcraft2::Utils.load(icon, {:x => 2, :y => 3})
|
16
|
+
icon.x.should == 2
|
17
|
+
icon.y.should == 3
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should allow a key to initialize another class' do
|
21
|
+
member = Starcraft2::Member.new()
|
22
|
+
Starcraft2::Utils.load(member, {:points => 10, :character => {:display_name => 'steve'}}, {:character => Starcraft2::Character})
|
23
|
+
member.points.should == 10
|
24
|
+
member.character.class.should == Starcraft2::Character
|
25
|
+
member.character.display_name.should == 'steve'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/starcraft2.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.test_files = `git ls-files -- {spec}/*`.split("\n")
|
15
15
|
gem.name = "starcraft2"
|
16
16
|
gem.require_paths = ["lib"]
|
17
|
-
gem.version = "0.0.
|
17
|
+
gem.version = "0.0.10"
|
18
18
|
|
19
19
|
gem.add_development_dependency 'rspec', '~> 2.6.0'
|
20
20
|
gem.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: starcraft2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Ellithorpe
|
@@ -134,19 +134,21 @@ files:
|
|
134
134
|
- lib/starcraft2/achievement.rb
|
135
135
|
- lib/starcraft2/character.rb
|
136
136
|
- lib/starcraft2/client.rb
|
137
|
+
- lib/starcraft2/icon.rb
|
137
138
|
- lib/starcraft2/ladder.rb
|
138
139
|
- lib/starcraft2/loader.rb
|
139
140
|
- lib/starcraft2/member.rb
|
140
141
|
- lib/starcraft2/reward.rb
|
141
|
-
- lib/starcraft2/
|
142
|
+
- lib/starcraft2/utils.rb
|
142
143
|
- spec/spec_helper.rb
|
143
144
|
- spec/starcraft2/achievement_spec.rb
|
144
145
|
- spec/starcraft2/character_spec.rb
|
145
146
|
- spec/starcraft2/client_spec.rb
|
147
|
+
- spec/starcraft2/icon_spec.rb
|
146
148
|
- spec/starcraft2/ladder_spec.rb
|
147
149
|
- spec/starcraft2/member_spec.rb
|
148
150
|
- spec/starcraft2/reward_spec.rb
|
149
|
-
- spec/starcraft2/
|
151
|
+
- spec/starcraft2/utils_spec.rb
|
150
152
|
- starcraft2.gemspec
|
151
153
|
homepage: ''
|
152
154
|
licenses: []
|