osm 0.1.2 → 0.1.3
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/CHANGELOG.md +4 -0
- data/lib/osm/section.rb +23 -0
- data/spec/osm/model_spec.rb +5 -5
- data/spec/osm/section_spec.rb +15 -0
- data/version.rb +1 -1
- metadata +22 -17
data/CHANGELOG.md
CHANGED
data/lib/osm/section.rb
CHANGED
@@ -184,6 +184,7 @@ module Osm
|
|
184
184
|
return all_permissions
|
185
185
|
end
|
186
186
|
|
187
|
+
|
187
188
|
# Get the section's notepads
|
188
189
|
# @param [Osm::Api] The api to use to make the request
|
189
190
|
# @!macro options_get
|
@@ -207,6 +208,28 @@ module Osm
|
|
207
208
|
return notepad
|
208
209
|
end
|
209
210
|
|
211
|
+
# Get badge stock levels
|
212
|
+
# @param [Osm::Api] The api to use to make the request
|
213
|
+
# @param [Osm::Term, Fixnum, nil] section the term (or its ID) to get the stock levels for, passing nil causes the current term to be used
|
214
|
+
# @!macro options_get
|
215
|
+
# @return Hash
|
216
|
+
def get_badge_stock(api, term=nil, options={})
|
217
|
+
term_id = term.nil? ? Osm::Term.get_current_term_for_section(api, self).id : term.to_i
|
218
|
+
cache_key = ['badge_stock', id, term_id]
|
219
|
+
|
220
|
+
if !options[:no_cache] && self.class.cache_exist?(api, cache_key) && self.class.get_user_permissions(api, self)[:badge].include?(:read)
|
221
|
+
return self.class.cache_read(api, cache_key)
|
222
|
+
end
|
223
|
+
|
224
|
+
data = api.perform_query("challenges.php?action=getInitialBadges&type=core§ionid=#{id}§ion=#{type}&termid=#{term_id}")
|
225
|
+
data = (data['stock'] || {}).select{ |k,v| !k.eql?('sectionid') }.
|
226
|
+
inject({}){ |new_hash,(badge, level)| new_hash[badge] = level.to_i; new_hash }
|
227
|
+
|
228
|
+
self.class.cache_write(api, cache_key, data)
|
229
|
+
return data
|
230
|
+
end
|
231
|
+
|
232
|
+
|
210
233
|
# Check if this section is one of the youth sections
|
211
234
|
# @return [Boolean]
|
212
235
|
def youth_section?
|
data/spec/osm/model_spec.rb
CHANGED
@@ -41,7 +41,7 @@ describe "Model" do
|
|
41
41
|
Osm::Model.configure({})
|
42
42
|
config = ModelTester.test_get_config
|
43
43
|
config[:cache].should be_nil
|
44
|
-
config[:ttl].should ==
|
44
|
+
config[:ttl].should == 600
|
45
45
|
config[:prepend_to_key].should == 'OSMAPI'
|
46
46
|
end
|
47
47
|
|
@@ -63,7 +63,7 @@ describe "Model" do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
it "Writes" do
|
66
|
-
OsmTest::Cache.should_receive('write').with('OSMAPI-osm-key', 'data', {:expires_in=>
|
66
|
+
OsmTest::Cache.should_receive('write').with('OSMAPI-osm-key', 'data', {:expires_in=>600}) { true }
|
67
67
|
ModelTester.cache('write', @api, 'key', 'data').should be_true
|
68
68
|
end
|
69
69
|
|
@@ -123,7 +123,7 @@ describe "Model" do
|
|
123
123
|
|
124
124
|
it "All Sections" do
|
125
125
|
permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
|
126
|
-
OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions, {:expires_in=>
|
126
|
+
OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions, {:expires_in=>600}) { true }
|
127
127
|
ModelTester.set_user_permissions(@api, permissions)
|
128
128
|
end
|
129
129
|
|
@@ -131,10 +131,10 @@ describe "Model" do
|
|
131
131
|
permissions = {1 => {:a => [:read, :write]}, 2 => {:a => [:read]}}
|
132
132
|
OsmTest::Cache.should_receive('exist?').with('OSMAPI-osm-permissions-user_id') { true }
|
133
133
|
OsmTest::Cache.should_receive('read').with('OSMAPI-osm-permissions-user_id') { permissions }
|
134
|
-
OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions.merge(3 => {:a => [:read]}), {:expires_in=>
|
134
|
+
OsmTest::Cache.should_receive('write').with('OSMAPI-osm-permissions-user_id', permissions.merge(3 => {:a => [:read]}), {:expires_in=>600}) { true }
|
135
135
|
ModelTester.set_user_permissions(@api, 3, {:a => [:read]})
|
136
136
|
end
|
137
137
|
|
138
138
|
end
|
139
139
|
|
140
|
-
end
|
140
|
+
end
|
data/spec/osm/section_spec.rb
CHANGED
@@ -122,6 +122,21 @@ describe "Section" do
|
|
122
122
|
section.get_notepad(@api).should == 'Section 1'
|
123
123
|
end
|
124
124
|
|
125
|
+
it "Fetch badge stock levels" do
|
126
|
+
badges_body = {
|
127
|
+
'stock' => {
|
128
|
+
'sectionid' => '1',
|
129
|
+
'badge_1' => '1',
|
130
|
+
'badge_2' => '2'
|
131
|
+
}
|
132
|
+
}
|
133
|
+
FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/challenges.php?action=getInitialBadges&type=core§ionid=1§ion=beavers&termid=2", :body => badges_body.to_json)
|
134
|
+
|
135
|
+
section = Osm::Section.get(@api, 1)
|
136
|
+
section.should_not be_nil
|
137
|
+
section.get_badge_stock(@api, 2).should == {'badge_1' => 1, 'badge_2' => 2}
|
138
|
+
end
|
139
|
+
|
125
140
|
end
|
126
141
|
|
127
142
|
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: osm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-22 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &78033570 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *78033570
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: httparty
|
27
|
-
requirement: &
|
27
|
+
requirement: &78033180 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.9'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *78033180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: active_attr
|
38
|
-
requirement: &
|
38
|
+
requirement: &78032730 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0.6'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *78032730
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activemodel
|
49
|
-
requirement: &
|
49
|
+
requirement: &78032450 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '3.2'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *78032450
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &78032090 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0.9'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *78032090
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &78031770 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '2.11'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *78031770
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: fakeweb
|
82
|
-
requirement: &
|
82
|
+
requirement: &78031150 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '1.3'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *78031150
|
91
91
|
description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
|
92
92
|
to retrieve and save data.
|
93
93
|
email:
|
@@ -149,12 +149,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
149
|
- - ! '>='
|
150
150
|
- !ruby/object:Gem::Version
|
151
151
|
version: '0'
|
152
|
+
segments:
|
153
|
+
- 0
|
154
|
+
hash: -198994829
|
152
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
156
|
none: false
|
154
157
|
requirements:
|
155
158
|
- - ! '>='
|
156
159
|
- !ruby/object:Gem::Version
|
157
160
|
version: '0'
|
161
|
+
segments:
|
162
|
+
- 0
|
163
|
+
hash: -198994829
|
158
164
|
requirements: []
|
159
165
|
rubyforge_project: osm
|
160
166
|
rubygems_version: 1.8.10
|
@@ -162,4 +168,3 @@ signing_key:
|
|
162
168
|
specification_version: 3
|
163
169
|
summary: Use the Online Scout Manager API
|
164
170
|
test_files: []
|
165
|
-
has_rdoc:
|