starcraft2 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -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