starcraft2 0.0.9 → 0.0.10

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.
@@ -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
- options.each do |k,v|
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)
@@ -3,9 +3,7 @@ module Starcraft2
3
3
  attr_accessor :id, :realm, :display_name, :clan_name, :clan_tag, :profile_path
4
4
 
5
5
  def initialize(options = {})
6
- options.each do |k,v|
7
- self.send(:"#{StringUtils.underscore(k.to_s)}=", v)
8
- end
6
+ Utils.load(self, options)
9
7
  end
10
8
  end
11
9
  end
@@ -15,15 +15,15 @@ module Starcraft2
15
15
  end
16
16
 
17
17
  def achievements
18
- Achievement.build(achievements_data)
18
+ Achievement.build(achievements_json)
19
19
  end
20
20
 
21
21
  def rewards
22
- Reward.build(rewards_data)
22
+ Reward.build(rewards_json)
23
23
  end
24
24
 
25
25
  def ladder(id)
26
- Ladder.build(ladder_data(id))
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 achievements_data
39
+ def achievements_json
40
40
  HTTParty.get(achievements_url).body
41
41
  end
42
42
 
43
43
  def achievements_url
44
- 'http://' + host + ACHIEVEMENTS_PATH + locale_param
44
+ 'https://' + host + ACHIEVEMENTS_PATH + locale_param
45
45
  end
46
46
 
47
- def rewards_data
47
+ def rewards_json
48
48
  HTTParty.get(rewards_url).body
49
49
  end
50
50
 
51
51
  def rewards_url
52
- 'http://' + host + REWARDS_PATH + locale_param
52
+ 'https://' + host + REWARDS_PATH + locale_param
53
53
  end
54
54
 
55
- def ladder_data(id)
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
- 'http://' + host + LADDER_PATH + id.to_s + locale_param
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
@@ -0,0 +1,9 @@
1
+ module Starcraft2
2
+ class Icon
3
+ attr_accessor :x, :y, :w, :h, :offset, :url
4
+
5
+ def initialize(options = {})
6
+ Utils.load(self, options)
7
+ end
8
+ end
9
+ end
@@ -1,7 +1,9 @@
1
+ require 'ostruct'
1
2
  require 'httparty'
2
3
  require 'json'
3
4
 
4
- require File.join('starcraft2', 'string_utils')
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')
@@ -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
- options.each do |k,v|
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
@@ -3,9 +3,7 @@ module Starcraft2
3
3
  attr_accessor :title, :id, :icon, :achievement_id
4
4
 
5
5
  def initialize(options = {})
6
- options.each do |k,v|
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('http://us.battle.net/api/sc2/data/achievements').body
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('http://us.battle.net/api/sc2/data/achievements').body).first
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 == {'x' => 0, 'y' => -375, 'w' => 75, 'h' => 75, 'offset' => 45, 'url' => 'http://media.blizzard.com/sc2/achievements/5-75.jpg'}
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' => 'http://example.com'}}
68
- achievement.icon.should == {'x' => 1, 'y' => 2, 'w' => 3, 'h' => 4, 'offset' => 0, 'url' => 'http://example.com'}
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 == 2362.0
110
- member.wins.should == 250
111
- member.losses.should == 101
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("http://us.battle.net/api/sc2/ladder/#{id}").body
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('http://us.battle.net/api/sc2/data/rewards').body
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('http://us.battle.net/api/sc2/data/rewards').body).first
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 == {'x' => 0, 'y' => 0, 'w' => 90, 'h' => 90, 'offset' => 0, 'url' => 'http://media.blizzard.com/sc2/portraits/0-90.jpg'}
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' => 'http://example.com'}}
51
- reward.icon.should == {'x' => 1, 'y' => 2, 'w' => 3, 'h' => 4, 'offset' => 0, 'url' => 'http://example.com'}
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.9"
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.9
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/string_utils.rb
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/string_utils_spec.rb
151
+ - spec/starcraft2/utils_spec.rb
150
152
  - starcraft2.gemspec
151
153
  homepage: ''
152
154
  licenses: []
@@ -1,11 +0,0 @@
1
- class StringUtils
2
- def self.underscore(string)
3
- word = string.dup
4
- word.gsub!(/::/, '/')
5
- word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
6
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
7
- word.tr!('-', '_')
8
- word.downcase!
9
- word
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe StringUtils do
4
- describe '#underscore' do
5
- it 'should underscore a string' do
6
- StringUtils.underscore('FooBar').should == 'foo_bar'
7
- end
8
- end
9
- end