starcraft2 0.0.1
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.
- data/.gitignore +19 -0
- data/.ruby-version +1 -0
- data/.rvmrc +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +3 -0
- data/README.md +29 -0
- data/Rakefile +7 -0
- data/fixtures/vcr_cassettes/achievements.yml +11160 -0
- data/fixtures/vcr_cassettes/rewards.yml +1836 -0
- data/lib/sc2/achievement.rb +20 -0
- data/lib/sc2/client.rb +28 -0
- data/lib/sc2/loader.rb +5 -0
- data/lib/sc2/reward.rb +20 -0
- data/lib/starcraft2.rb +1 -0
- data/sc2.gemspec +22 -0
- data/spec/sc2/achievement_spec.rb +58 -0
- data/spec/sc2/client_spec.rb +45 -0
- data/spec/sc2/reward_spec.rb +48 -0
- data/spec/spec_helper.rb +10 -0
- metadata +152 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
module SC2
|
2
|
+
class Achievement
|
3
|
+
attr_accessor :title, :description, :achievement_id, :category_id, :points, :icon
|
4
|
+
|
5
|
+
def initialize(options = {})
|
6
|
+
options.each do |k,v|
|
7
|
+
self.send(:"#{k}=", v)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.build_achievements(raw_data)
|
12
|
+
data = JSON.parse(raw_data)
|
13
|
+
data['achievements'].map do |achievement|
|
14
|
+
achievement['achievement_id'] = achievement.delete('achievementId')
|
15
|
+
achievement['category_id'] = achievement.delete('categoryId')
|
16
|
+
new(achievement)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/sc2/client.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module SC2
|
2
|
+
class Client
|
3
|
+
ACHIEVEMENTS_PATH = "/api/sc2/data/achievements"
|
4
|
+
|
5
|
+
attr_accessor :locale, :host
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
options.each do |k,v|
|
9
|
+
self.send(:"#{k}=", v)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def achievements
|
14
|
+
Achievement.build_achievements(achievements_data)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def achievements_data
|
20
|
+
HTTParty.get(achievements_url).body
|
21
|
+
end
|
22
|
+
|
23
|
+
def achievements_url
|
24
|
+
current_locale = locale.nil? ? '' : "?locale=#{locale}"
|
25
|
+
"http://" + host + ACHIEVEMENTS_PATH + current_locale
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/sc2/loader.rb
ADDED
data/lib/sc2/reward.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module SC2
|
2
|
+
class Reward
|
3
|
+
attr_accessor :title, :id, :icon, :achievement_id
|
4
|
+
|
5
|
+
def initialize(options = {})
|
6
|
+
options.each do |k,v|
|
7
|
+
self.send(:"#{k}=", v)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.build_rewards(raw_data)
|
12
|
+
data = JSON.parse(raw_data)
|
13
|
+
data['portraits'].map do |reward|
|
14
|
+
reward['achievement_id'] = reward.delete('achievementId')
|
15
|
+
new(reward)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/starcraft2.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.join('sc2', 'loader.rb')
|
data/sc2.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |gem|
|
3
|
+
gem.add_dependency 'httparty'
|
4
|
+
|
5
|
+
gem.authors = ["Josh Ellithorpe", "James Fickel", "Jan Hein Hoogstad"]
|
6
|
+
gem.email = ["quest@mac.com"]
|
7
|
+
gem.description = %q{A small SC2 api wrapper}
|
8
|
+
gem.summary = %q{A small SC2 api wrapper}
|
9
|
+
gem.homepage = ""
|
10
|
+
|
11
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
|
+
gem.files = `git ls-files`.split("\n")
|
13
|
+
gem.test_files = `git ls-files -- {spec}/*`.split("\n")
|
14
|
+
gem.name = "starcraft2"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = "0.0.1"
|
17
|
+
|
18
|
+
gem.add_development_dependency 'rspec', '~> 2.6.0'
|
19
|
+
gem.add_development_dependency 'rake'
|
20
|
+
gem.add_development_dependency 'vcr'
|
21
|
+
gem.add_development_dependency 'webmock', '1.11'
|
22
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SC2::Achievement do
|
4
|
+
describe '#build_achievements' do
|
5
|
+
let(:achievements) { SC2::Achievement.build_achievements(@raw_achievement_data)}
|
6
|
+
|
7
|
+
before do
|
8
|
+
VCR.use_cassette('achievements') do
|
9
|
+
@raw_achievement_data = HTTParty.get('http://us.battle.net/api/sc2/data/achievements').body
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should build an array of achievements' do
|
14
|
+
achievements.class.should == Array
|
15
|
+
achievements.each do |a|
|
16
|
+
a.class.should == SC2::Achievement
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.initialize' do
|
22
|
+
let(:achievement) {SC2::Achievement.new(@options)}
|
23
|
+
|
24
|
+
before do
|
25
|
+
@options = {}
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should store the title' do
|
29
|
+
@options = {:title => 'Test Title'}
|
30
|
+
achievement.title.should == 'Test Title'
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should store the description' do
|
34
|
+
@options = {:description => 'Description'}
|
35
|
+
achievement.description.should == 'Description'
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should store the achievement id' do
|
39
|
+
@options = {:achievement_id => 5}
|
40
|
+
achievement.achievement_id.should == 5
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should store the category id' do
|
44
|
+
@options = {:category_id => 10}
|
45
|
+
achievement.category_id.should == 10
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should store the points' do
|
49
|
+
@options = {:points => 5}
|
50
|
+
achievement.points.should == 5
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should store the icon data' do
|
54
|
+
@options = {:icon => {:x => 1, :y => 2, :w => 3, :h => 4, :offset => 0, :url => 'http://example.com'}}
|
55
|
+
achievement.icon.should == {:x => 1, :y => 2, :w => 3, :h => 4, :offset => 0, :url => 'http://example.com'}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe SC2::Client do
|
4
|
+
let(:client) { SC2::Client.new(@options)}
|
5
|
+
|
6
|
+
before do
|
7
|
+
@options = {:host => 'us.battle.net'}
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'url constants' do
|
11
|
+
it 'should store the achievements url' do
|
12
|
+
SC2::Client::ACHIEVEMENTS_PATH.should == '/api/sc2/data/achievements'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should store the locale' do
|
17
|
+
@options = { :locale => 'en_US' }
|
18
|
+
client.locale.should == 'en_US'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should store the host' do
|
22
|
+
@options = { :host => 'someserver.com'}
|
23
|
+
client.host.should == 'someserver.com'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should return an array of achievements' do
|
27
|
+
VCR.use_cassette('achievements') do
|
28
|
+
client.achievements.class.should == Array
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should return items of type SC2::Achievement' do
|
33
|
+
VCR.use_cassette('achievements') do
|
34
|
+
client.achievements.first.class.should == SC2::Achievement
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should return achievements in the correct locale" do
|
39
|
+
@options.merge!({:locale => "pt_BR"})
|
40
|
+
|
41
|
+
VCR.use_cassette('achievements') do
|
42
|
+
client.achievements.first.title.should == "TCT Destruidor"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe SC2::Reward do
|
4
|
+
describe '#build_rewards' do
|
5
|
+
let(:rewards) { SC2::Reward.build_rewards(@raw_reward_data)}
|
6
|
+
|
7
|
+
before do
|
8
|
+
VCR.use_cassette('rewards') do
|
9
|
+
@raw_reward_data = HTTParty.get('http://us.battle.net/api/sc2/data/rewards').body
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should build an array of rewards' do
|
14
|
+
rewards.class.should == Array
|
15
|
+
rewards.each do |r|
|
16
|
+
r.class.should == SC2::Reward
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '.initialize' do
|
22
|
+
let(:reward) {SC2::Reward.new(@options)}
|
23
|
+
|
24
|
+
before do
|
25
|
+
@options = {}
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should store the title' do
|
29
|
+
@options = {:title => 'Test Title'}
|
30
|
+
reward.title.should == 'Test Title'
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should store the id' do
|
34
|
+
@options = {:id => 3}
|
35
|
+
reward.id.should == 3
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should store the icon data' do
|
39
|
+
@options = {:icon => {:x => 1, :y => 2, :w => 3, :h => 4, :offset => 0, :url => 'http://example.com'}}
|
40
|
+
reward.icon.should == {:x => 1, :y => 2, :w => 3, :h => 4, :offset => 0, :url => 'http://example.com'}
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should store the achievement id" do
|
44
|
+
@options = {:achievement_id => 5}
|
45
|
+
reward.achievement_id.should == 5
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.join('bundler', 'setup')
|
2
|
+
require 'rspec'
|
3
|
+
require 'vcr'
|
4
|
+
require 'starcraft2'
|
5
|
+
|
6
|
+
VCR.configure do |c|
|
7
|
+
c.cassette_library_dir = 'fixtures/vcr_cassettes'
|
8
|
+
c.hook_into :webmock
|
9
|
+
c.default_cassette_options = { :record => :new_episodes, :erb => true }
|
10
|
+
end
|
metadata
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: starcraft2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Josh Ellithorpe
|
9
|
+
- James Fickel
|
10
|
+
- Jan Hein Hoogstad
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2013-08-07 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: httparty
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '0'
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ! '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0'
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rspec
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
none: false
|
36
|
+
requirements:
|
37
|
+
- - ~>
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 2.6.0
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.6.0
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: vcr
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
type: :development
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: webmock
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - '='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '1.11'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - '='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '1.11'
|
96
|
+
description: A small SC2 api wrapper
|
97
|
+
email:
|
98
|
+
- quest@mac.com
|
99
|
+
executables: []
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- .gitignore
|
104
|
+
- .ruby-version
|
105
|
+
- .rvmrc
|
106
|
+
- .travis.yml
|
107
|
+
- Gemfile
|
108
|
+
- README.md
|
109
|
+
- Rakefile
|
110
|
+
- fixtures/vcr_cassettes/achievements.yml
|
111
|
+
- fixtures/vcr_cassettes/rewards.yml
|
112
|
+
- lib/sc2/achievement.rb
|
113
|
+
- lib/sc2/client.rb
|
114
|
+
- lib/sc2/loader.rb
|
115
|
+
- lib/sc2/reward.rb
|
116
|
+
- lib/starcraft2.rb
|
117
|
+
- sc2.gemspec
|
118
|
+
- spec/sc2/achievement_spec.rb
|
119
|
+
- spec/sc2/client_spec.rb
|
120
|
+
- spec/sc2/reward_spec.rb
|
121
|
+
- spec/spec_helper.rb
|
122
|
+
homepage: ''
|
123
|
+
licenses: []
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
hash: -2271089934831786972
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
hash: -2271089934831786972
|
146
|
+
requirements: []
|
147
|
+
rubyforge_project:
|
148
|
+
rubygems_version: 1.8.25
|
149
|
+
signing_key:
|
150
|
+
specification_version: 3
|
151
|
+
summary: A small SC2 api wrapper
|
152
|
+
test_files: []
|