osm 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,33 @@
1
+ ## Version 0.0.6
2
+
3
+ * Usage changes:
4
+ * When calling an api.get\_\* method api_data is now passed as an additional paramter not as part of the options
5
+ * Work on documentation:
6
+ * Tidy up params
7
+ * Tidy up returns
8
+ * Add class attributes
9
+ * Update README file:
10
+ * Improve installation instructions
11
+ * Add use section
12
+ * Add versioning section
13
+
14
+ ## Version 0.0.5
15
+
16
+ * Bug fix
17
+
18
+ ## Version 0.0.4
19
+
20
+ * Bug fix
21
+
22
+ ## Version 0.0.3
23
+
24
+ * Retrieve grouping points from OSM
25
+ * Respond to OSM chaninging how it returns member's groupings
26
+
27
+ ## Version 0.0.2
28
+
29
+ * Bug fixes
30
+
1
31
  ## Version 0.0.1
2
32
 
3
33
  * Initial release.
data/README.md CHANGED
@@ -13,14 +13,48 @@ Staging [![Build Status](https://secure.travis-ci.org/robertgauld/osm.png?branch
13
13
  Use the [Online Scout Manager](https://www.onlinescoutmanager.co.uk) API.
14
14
 
15
15
 
16
- ## Installation / Documentation
16
+ ## Installation
17
+
18
+ **Requires Ruby 1.9.2 or later.**
17
19
 
18
20
  Add to your Gemfile and run the `bundle` command to install it.
19
21
 
20
22
  ```ruby
21
23
  gem 'osm'
22
24
  ```
23
- **Requires Ruby 1.9.2 or later.**
24
25
 
26
+ Configure the gem during the initalization of the app (e.g. in config/initializers/osm.rb).
27
+
28
+ ```ruby
29
+ ActionDispatch::Callbacks.to_prepare do
30
+ Osm::Api.configure(
31
+ :api_id => 'YOU WILL BE GIVEN THIS BY ED AT OSM',
32
+ :api_token => 'YOU WILL BE GIVEN THIS BY ED AT OSM',
33
+ :api_name => 'YOU WILL GIVE THIS TO ED AT OSM',
34
+ :api_site => :scout,
35
+ )
36
+ end
37
+ ```
38
+
39
+
40
+ ## Use
41
+
42
+ In order to use the OSM API you first need to authorize the api to be used by the user, to do this use the {Osm::Api#authorize} method to get a userid and secret.
43
+
44
+ ```ruby
45
+ Osm::Api.new.authorize(users_email_address, users_osm_password)
46
+ ```
47
+
48
+ Once you have done this you should store the userid and secret somewhere, you can then create an {Osm::Api} object to start acting as the user.
49
+
50
+ ```ruby
51
+ api_for_this_user = Osm::Api.new(userid, secret)
52
+ ```
53
+
54
+
55
+ ## Documentation & Versioning
25
56
 
26
57
  Documentation can be found on [rubydoc.info](http://rubydoc.info/github/robertgauld/osm/master/frames)
58
+
59
+ We follow the [Semantic Versioning](http://semver.org/) concept,
60
+ however it should be noted that when the OSM API adds a feature it can be difficult to decide wether to bump the patch or minor version number up. A smaller change (such as adding score into the grouping object) will bump the patch whereas a larger change wil bump the minor version.
@@ -3,6 +3,47 @@ module Osm
3
3
  class Activity
4
4
 
5
5
  attr_reader :id, :version, :group_id, :user_id, :title, :description, :resources, :instructions, :running_time, :location, :shared, :rating, :editable, :deletable, :used, :versions, :sections, :tags, :files, :badges
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for the activity
8
+ # @!attribute [r] version
9
+ # @return [FixNum] the version of the activity
10
+ # @!attribute [r] group_id
11
+ # @return [FixNum] the group_id
12
+ # @!attribute [r] user_id
13
+ # @return [FixNum] the user_id of the creator of the activity
14
+ # @!attribute [r] title
15
+ # @return [String] the activity's title
16
+ # @!attribute [r] description
17
+ # @return [String] the description of the activity
18
+ # @!attribute [r] resources
19
+ # @return [String] resources required to do the activity
20
+ # @!attribute [r] instructions
21
+ # @return [String] instructions for doing the activity
22
+ # @!attribute [r] running_time
23
+ # @return [FixNum] duration of the activity in minutes
24
+ # @!attribute [r] location
25
+ # @return [Symbol] :indoors or :outdoors
26
+ # @!attribute [r] shared
27
+ # @return [FixNum] ?
28
+ # @!attribute [r] rating
29
+ # @return [FixNum] ?
30
+ # @!attribute [r] editable
31
+ # @return [Boolean] ?
32
+ # @!attribute [r] deletable
33
+ # @return [Boolean] ?
34
+ # @!attribute [r] used
35
+ # @return [FixNum] ?
36
+ # @!attribute [r] versions
37
+ # @return [Hash] ?
38
+ # @!attribute [r] sections
39
+ # @return [Array<Symbol>] the sections the activity is appropriate for
40
+ # @!attribute [r] tags
41
+ # @return [Array<String>] the tags attached to the activity
42
+ # @!attribute [r] files
43
+ # @return [Array] ?
44
+ # @!attribute [r] badges
45
+ # @return [Array] ?
46
+
6
47
 
7
48
  # Initialize a new Activity using the hash returned by the API call
8
49
  # @param data the hash of data for the object returned by the API
@@ -1,3 +1,13 @@
1
+ # @!macro [new] options_get
2
+ # @param [Hash] options
3
+ # @option options [Boolean] :no_cache (optional) if true then the data will be retreived from OSM not the cache
4
+
5
+ # @!macro [new] options_api_data
6
+ # @param [Hash] api_data
7
+ # @option api_data [String] 'userid' (optional) the OSM userid to make the request as
8
+ # @option api_data [String] 'secret' (optional) the OSM secret belonging to the above user
9
+
10
+
1
11
  module Osm
2
12
 
3
13
  class Api
@@ -11,9 +21,10 @@ module Osm
11
21
 
12
22
  # Initialize a new API connection
13
23
  # If passing user details then both must be passed
14
- # @param userid (optional) osm userid of the user to act as
15
- # @param secret (optional) osm secret of the user to act as
16
- # @param site (optional) wether to use OSM (:scout) or OGM (:guide), defaults to the value set for the class
24
+ # @param [String] userid osm userid of the user to act as
25
+ # @param [String] secret osm secret of the user to act as
26
+ # @param [Symbol] site wether to use OSM (:scout) or OGM (:guide), defaults to the value set for the class
27
+ # @return nil
17
28
  def initialize(userid=nil, secret=nil, site=@@api_site)
18
29
  raise ArgumentError, 'You must pass a secret if you are passing a userid' if secret.nil? && !userid.nil?
19
30
  raise ArgumentError, 'You must pass a userid if you are passing a secret' if userid.nil? && !secret.nil?
@@ -22,15 +33,17 @@ module Osm
22
33
  @base_url = 'https://www.onlinescoutmanager.co.uk' if site == :scout
23
34
  @base_url = 'http://www.onlineguidemanager.co.uk' if site == :guide
24
35
  set_user(userid, secret)
36
+ nil
25
37
  end
26
38
 
27
39
  # Configure the API options used by all instances of the class
28
- # @param options - a hash containing the following keys:
29
- # * :api_id - the apiid given to you for using the OSM id
30
- # * :api_token - the token which goes with the above api
31
- # * :api_name - the name displayed in the External Access tab of OSM
32
- # * :api_site - wether to use OSM (if :scout) or OGM (if :guide)
33
- # * :default_cache_ttl (optional, default = 30 minutes) - The default TTL value for the cache, note that some items are cached for twice this time and others are cached for half this time.
40
+ # @param [Hash] options
41
+ # @option options [String] :api_id the apiid given to you for using the OSM id
42
+ # @option options [String] :api_token the token which goes with the above api
43
+ # @option options [String] :api_name the name displayed in the External Access tab of OSM
44
+ # @option options [Symbol] :api_sate wether to use OSM (if :scout) or OGM (if :guide)
45
+ # @option options [FixNum] :default_cache_ttl (optional, default = 30.minutes) The default TTL value for the cache, note that some items are cached for twice this time and others are cached for half this time (in seconds).
46
+ # @return nil
34
47
  def self.configure(options)
35
48
  raise ArgumentError, ':api_id does not exist in options hash' if options[:api_id].nil?
36
49
  raise ArgumentError, ':api_token does not exist in options hash' if options[:api_token].nil?
@@ -38,30 +51,31 @@ module Osm
38
51
  raise ArgumentError, ':api_site does not exist in options hash or is invalid, this should be set to either :scout or :guide' unless [:scout, :guide].include?(options[:api_site])
39
52
  raise ArgumentError, ':default_cache_ttl must be greater than 0' unless (options[:default_cache_ttl].nil? || options[:default_cache_ttl].to_i > 0)
40
53
 
41
- @@api_id = options[:api_id]
42
- @@api_token = options[:api_token]
43
- @@api_name = options[:api_name]
54
+ @@api_id = options[:api_id].to_s
55
+ @@api_token = options[:api_token].to_s
56
+ @@api_name = options[:api_name].to_s
44
57
  @@api_site = options[:api_site]
45
58
  @@default_cache_ttl = options[:default_cache_ttl].to_i unless options[:default_cache_ttl].nil?
59
+ nil
46
60
  end
47
61
 
48
62
  # Get the API ID used in this class
49
- # @returns the API ID
63
+ # @return [String] the API ID
50
64
  def self.api_id
51
65
  return @@api_id
52
66
  end
53
67
 
54
68
  # Get the API name displayed in the External Access tab of OSM
55
- # @returns the API ID
69
+ # @return [String] the API name
56
70
  def self.api_name
57
71
  return @@api_name
58
72
  end
59
73
 
60
74
  # Get the userid and secret to be able to act as a certain user on the OSM system
61
75
  # Also set's the 'current user'
62
- # @param email the login email address of the user on OSM
63
- # @param password the login password of the user on OSM
64
- # @returns hash containing the following keys:
76
+ # @param [String] email the login email address of the user on OSM
77
+ # @param [String] password the login password of the user on OSM
78
+ # @return [Hash] a hash containing the following keys:
65
79
  # * 'userid' - the userid to use in future requests
66
80
  # * 'secret' - the secret to use in future requests
67
81
  def authorize(email, password)
@@ -75,14 +89,10 @@ module Osm
75
89
  end
76
90
 
77
91
  # Get the user's roles
78
- # @param options (optional) a hash which may contain the following keys:
79
- # * :no_cache - if true then the data will be retreived from OSM not the cache
80
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
81
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
82
- # * 'secret' (optional) the OSM secret belonging to the above user
83
- # @returns an array of Osm::Role objects
84
- def get_roles(options={})
85
- api_data = options[:api_data] || {}
92
+ # @!macro options_get
93
+ # @!macro options_api_data
94
+ # @return [Array<Osm::Role>]
95
+ def get_roles(options={}, api_data={})
86
96
 
87
97
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-roles-#{api_data[:userid] || @userid}")
88
98
  return Rails.cache.read("OSMAPI-roles-#{api_data[:userid] || @userid}")
@@ -103,15 +113,10 @@ module Osm
103
113
  end
104
114
 
105
115
  # Get the user's notepads
106
- # @param options (optional) a hash which may contain the following keys:
107
- # * :no_cache - if true then the data will be retreived from OSM not the cache
108
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
109
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
110
- # * 'secret' (optional) the OSM secret belonging to the above user
111
- # @returns a hash (keys are section IDs, values are a string)
112
- def get_notepads(options={})
113
- api_data = options[:api_data] || {}
114
-
116
+ # @!macro options_get
117
+ # @!macro options_api_data
118
+ # @return [Hash] a hash (keys are section IDs, values are a string)
119
+ def get_notepads(options={}, api_data={})
115
120
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-notepads-#{api_data[:userid] || @userid}")
116
121
  return Rails.cache.read("OSMAPI-notepads-#{api_data[:userid] || @userid}")
117
122
  end
@@ -130,22 +135,17 @@ module Osm
130
135
  end
131
136
 
132
137
  # Get the notepad for a specified section
133
- # @param section_id the section id of the required section
134
- # @param options (optional) a hash which may contain the following keys:
135
- # * :no_cache - if true then the data will be retreived from OSM not the cache
136
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
137
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
138
- # * 'secret' (optional) the OSM secret belonging to the above user
139
- # @returns nil if an error occured or the user does not have access to that section
140
- # @returns a string otherwise
141
- def get_notepad(section_id, options={})
142
- api_data = options[:api_data] || {}
143
-
138
+ # @param [FixNum] section_id the section id of the required section
139
+ # @!macro options_get
140
+ # @!macro options_api_data
141
+ # @return nil if an error occured or the user does not have access to that section
142
+ # @return [String] the content of the notepad otherwise
143
+ def get_notepad(section_id, options={}, api_data={})
144
144
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-notepad-#{section_id}") && self.user_can_access?(:section, section_id, api_data)
145
145
  return Rails.cache.read("OSMAPI-notepad-#{section_id}")
146
146
  end
147
147
 
148
- notepads = get_notepads(options)
148
+ notepads = get_notepads(options, api_data)
149
149
  return nil unless notepads.is_a? Hash
150
150
 
151
151
  notepads.each_key do |key|
@@ -156,22 +156,18 @@ module Osm
156
156
  end
157
157
 
158
158
  # Get the section (and its configuration)
159
- # @param section_id the section id of the required section
160
- # @param options (optional) a hash which may contain the following keys:
161
- # * :no_cache - if true then the data will be retreived from OSM not the cache
162
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
163
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
164
- # * 'secret' (optional) the OSM secret belonging to the above user
165
- # @returns nil if an error occured or the user does not have access to that section
166
- # @returns an Osm::SectionConfig object otherwise
167
- def get_section(section_id, options={})
168
- api_data = options[:api_data] || {}
159
+ # @param [FixNum] section_id the section id of the required section
160
+ # @!macro options_get
161
+ # @!macro options_api_data
162
+ # @return nil if an error occured or the user does not have access to that section
163
+ # @return [Osm::Section]
164
+ def get_section(section_id, options={}, api_data={})
169
165
 
170
166
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-section-#{section_id}") && self.user_can_access?(:section, section_id, api_data)
171
167
  return Rails.cache.read("OSMAPI-section-#{section_id}")
172
168
  end
173
169
 
174
- roles = get_roles(options)
170
+ roles = get_roles(options, api_data)
175
171
  return nil unless roles.is_a? Array
176
172
 
177
173
  roles.each do |role|
@@ -182,16 +178,11 @@ module Osm
182
178
  end
183
179
 
184
180
  # Get the groupings (e.g. patrols, sixes, lodges) for a given section
185
- # @param section_id the section to get the programme for
186
- # @param options (optional) a hash which may contain the following keys:
187
- # * :no_cache - if true then the data will be retreived from OSM not the cache
188
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
189
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
190
- # * 'secret' (optional) the OSM secret belonging to the above user
191
- # @returns an array of Osm::Patrol objects
192
- def get_groupings(section_id, options={})
193
- api_data = options[:api_data] || {}
194
-
181
+ # @param [FixNum] section_id the section to get the programme for
182
+ # @!macro options_get
183
+ # @!macro options_api_data
184
+ # @return [Array<Osm::Grouping>]
185
+ def get_groupings(section_id, options={}, api_data={})
195
186
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-groupings-#{section_id}") && self.user_can_access?(:section, section_id, api_data)
196
187
  return Rails.cache.read("OSMAPI-groupings-#{section_id}")
197
188
  end
@@ -211,15 +202,10 @@ module Osm
211
202
  end
212
203
 
213
204
  # Get the terms that the OSM user can access
214
- # @param options (optional) a hash which may contain the following keys:
215
- # * :no_cache - if true then the data will be retreived from OSM not the cache
216
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
217
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
218
- # * 'secret' (optional) the OSM secret belonging to the above user
219
- # @returns an array of Osm::Term objects
220
- def get_terms(options={})
221
- api_data = options[:api_data] || {}
222
-
205
+ # @!macro options_get
206
+ # @!macro options_api_data
207
+ # @return [Array<Osm::Term>]
208
+ def get_terms(options={}, api_data={})
223
209
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-terms-#{api_data[:userid] || @userid}")
224
210
  return Rails.cache.read("OSMAPI-terms-#{api_data[:userid] || @userid}")
225
211
  end
@@ -241,17 +227,12 @@ module Osm
241
227
  end
242
228
 
243
229
  # Get a term
244
- # @param term_id the id of the required term
245
- # @param options (optional) a hash which may contain the following keys:
246
- # * :no_cache - if true then the data will be retreived from OSM not the cache
247
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
248
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
249
- # * 'secret' (optional) the OSM secret belonging to the above user
250
- # @returns nil if an error occured or the user does not have access to that term
251
- # @returns an Osm::Term object otherwise
252
- def get_term(term_id, options={})
253
- api_data = options[:api_data] || {}
254
-
230
+ # @param [FixNum] term_id the id of the required term
231
+ # @!macro options_get
232
+ # @!macro options_api_data
233
+ # @return nil if an error occured or the user does not have access to that term
234
+ # @return [Osm::Term]
235
+ def get_term(term_id, options={}, api_data={})
255
236
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-term-#{term_id}") && self.user_can_access?(:term, term_id, api_data)
256
237
  return Rails.cache.read("OSMAPI-term-#{term_id}")
257
238
  end
@@ -267,17 +248,12 @@ module Osm
267
248
  end
268
249
 
269
250
  # Get the programme for a given term
270
- # @param sectionid the section to get the programme for
271
- # @param termid the term to get the programme for
272
- # @param options (optional) a hash which may contain the following keys:
273
- # * :no_cache - if true then the data will be retreived from OSM not the cache
274
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
275
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
276
- # * 'secret' (optional) the OSM secret belonging to the above user
277
- # @returns an array of Osm::ProgrammeItem objects
278
- def get_programme(section_id, term_id, options={})
279
- api_data = options[:api_data] || {}
280
-
251
+ # @param [FixNum] section_id the section to get the programme for
252
+ # @param [FixNum] term_id the term to get the programme for
253
+ # @!macro options_get
254
+ # @!macro options_api_data
255
+ # @return [Array<Osm::ProgrammeItem>]
256
+ def get_programme(section_id, term_id, options={}, api_data={})
281
257
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-programme-#{section_id}-#{term_id}") && self.user_can_access?(:programme, section_id, api_data)
282
258
  return Rails.cache.read("OSMAPI-programme-#{section_id}-#{term_id}")
283
259
  end
@@ -303,17 +279,12 @@ module Osm
303
279
  end
304
280
 
305
281
  # Get activity details
306
- # @param activity_id the activity ID
307
- # @param version (optional) the version of the activity to retreive
308
- # @param options (optional) a hash which may contain the following keys:
309
- # * :no_cache - if true then the data will be retreived from OSM not the cache
310
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
311
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
312
- # * 'secret' (optional) the OSM secret belonging to the above user
313
- # @returns an Osm::Activity object
314
- def get_activity(activity_id, version=nil, options={})
315
- api_data = options[:api_data] || {}
316
-
282
+ # @param [FixNum] activity_id the activity ID
283
+ # @param [FixNum] version the version of the activity to retreive, if nil the latest version will be assumed
284
+ # @!macro options_get
285
+ # @!macro options_api_data
286
+ # @return [Osm::Activity]
287
+ def get_activity(activity_id, version=nil, options={}, api_data={})
317
288
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-activity-#{activity_id}-#{version}") && self.user_can_access?(:activity, activity_id, api_data)
318
289
  return Rails.cache.read("OSMAPI-activity-#{activity_id}-#{version}")
319
290
  end
@@ -334,16 +305,12 @@ module Osm
334
305
  end
335
306
 
336
307
  # Get member details
337
- # @section_id the section to get details for
338
- # @term_id (optional) the term to get details for, if it is omitted then the current term is used
339
- # @param options (optional) a hash which may contain the following keys:
340
- # * :no_cache - if true then the data will be retreived from OSM not the cache
341
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
342
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
343
- # * 'secret' (optional) the OSM secret belonging to the above user
344
- # @returns an array of Osm::Member objects
345
- def get_members(section_id, term_id=nil, options={})
346
- api_data = options[:api_data] || {}
308
+ # @param [FixNum] section_id the section to get details for
309
+ # @param [FixNum] term_id the term to get details for, if nil the current term is assumed
310
+ # @!macro options_get
311
+ # @!macro options_api_data
312
+ # @return [Array<Osm::Member>]
313
+ def get_members(section_id, term_id=nil, options={}, api_data={})
347
314
  term_id = Osm::find_current_term_id(self, section_id, api_data) if term_id.nil?
348
315
 
349
316
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-members-#{section_id}-#{term_id}") && self.user_can_access?(:member, section_id, api_data)
@@ -363,16 +330,11 @@ module Osm
363
330
  end
364
331
 
365
332
  # Get API access details for a given section
366
- # @param section_id the section to get details for
367
- # @param options (optional) a hash which may contain the following keys:
368
- # * :no_cache - if true then the data will be retreived from OSM not the cache
369
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
370
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
371
- # * 'secret' (optional) the OSM secret belonging to the above user
372
- # @returns an array of Osm::ApiAccess objects
373
- def get_api_access(section_id, options={})
374
- api_data = options[:api_data] || {}
375
-
333
+ # @param [FixNum] section_id the section to get details for
334
+ # @!macro options_get
335
+ # @!macro options_api_data
336
+ # @return [Array<Osm::ApiAccess>]
337
+ def get_api_access(section_id, options={}, api_data={})
376
338
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-api_access-#{api_data['userid'] || @userid}-#{section_id}")
377
339
  return Rails.cache.read("OSMAPI-api_access-#{api_data['userid'] || @userid}-#{section_id}")
378
340
  end
@@ -393,16 +355,11 @@ module Osm
393
355
  end
394
356
 
395
357
  # Get our API access details for a given section
396
- # @param section_id the section to get details for
397
- # @param options (optional) a hash which may contain the following keys:
398
- # * :no_cache - if true then the data will be retreived from OSM not the cache
399
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
400
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
401
- # * 'secret' (optional) the OSM secret belonging to the above user
402
- # @returns an Osm::ApiAccess objects
403
- def get_our_api_access(section_id, options={})
404
- api_data = options[:api_data] || {}
405
-
358
+ # @param [FixNum] section_id the section to get details for
359
+ # @!macro options_get
360
+ # @!macro options_api_data
361
+ # @return [Osm::ApiAccess]
362
+ def get_our_api_access(section_id, options={}, api_data={})
406
363
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-api_access-#{api_data['userid'] || @userid}-#{section_id}-#{Osm::Api.api_id}")
407
364
  return Rails.cache.read("OSMAPI-api_access-#{api_data['userid'] || @userid}-#{section_id}-#{Osm::Api.api_id}")
408
365
  end
@@ -417,16 +374,11 @@ module Osm
417
374
  end
418
375
 
419
376
  # Get events
420
- # @section_id the section to get details for
421
- # @param options (optional) a hash which may contain the following keys:
422
- # * :no_cache - if true then the data will be retreived from OSM not the cache
423
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
424
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
425
- # * 'secret' (optional) the OSM secret belonging to the above user
426
- # @returns an array of Osm::Event objects
427
- def get_events(section_id, options={})
428
- api_data = options[:api_data] || {}
429
-
377
+ # @param [FixNum] section_id the section to get details for
378
+ # @!macro options_get
379
+ # @!macro options_api_data
380
+ # @return [Array<Osm::Event>]
381
+ def get_events(section_id, options={}, api_data={})
430
382
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-events-#{section_id}") && self.user_can_access?(:programme, section_id, api_data)
431
383
  return Rails.cache.read("OSMAPI-events-#{section_id}")
432
384
  end
@@ -446,15 +398,11 @@ module Osm
446
398
  end
447
399
 
448
400
  # Get due badges
449
- # @section_id the section to get details for
450
- # @param options (optional) a hash which may contain the following keys:
451
- # * :no_cache - if true then the data will be retreived from OSM not the cache
452
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
453
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
454
- # * 'secret' (optional) the OSM secret belonging to the above user
455
- # @returns an Osm::DueBadges object
456
- def get_due_badges(section_id, term_id=nil, options={})
457
- api_data = options[:api_data] || {}
401
+ # @param [FixNum] section_id the section to get details for
402
+ # @!macro options_get
403
+ # @!macro options_api_data
404
+ # @return [Osm::DueBadges]
405
+ def get_due_badges(section_id, term_id=nil, options={}, api_data={})
458
406
  term_id = Osm::find_current_term_id(self, section_id, api_data) if term_id.nil?
459
407
 
460
408
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-due_badges-#{section_id}-#{term_id}") && self.user_can_access?(:badge, section_id, api_data)
@@ -472,15 +420,11 @@ module Osm
472
420
  end
473
421
 
474
422
  # Get register structure
475
- # @section_id the section to get details for
476
- # @param options (optional) a hash which may contain the following keys:
477
- # * :no_cache - if true then the data will be retreived from OSM not the cache
478
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
479
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
480
- # * 'secret' (optional) the OSM secret belonging to the above user
481
- # @returns an array of hashes representing the rows of the register
482
- def get_register_structure(section_id, term_id=nil, options={})
483
- api_data = options[:api_data] || {}
423
+ # @param [FixNum] section_id the section to get details for
424
+ # @!macro options_get
425
+ # @!macro options_api_data
426
+ # @return [Array<Hash>] representing the rows of the register
427
+ def get_register_structure(section_id, term_id=nil, options={}, api_data={})
484
428
  term_id = Osm::find_current_term_id(self, section_id, api_data) if term_id.nil?
485
429
 
486
430
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-register_structure-#{section_id}-#{term_id}") && self.user_can_access?(:register, section_id, api_data)
@@ -502,15 +446,11 @@ module Osm
502
446
  end
503
447
 
504
448
  # Get register
505
- # @section_id the section to get details for
506
- # @param options (optional) a hash which may contain the following keys:
507
- # * :no_cache - if true then the data will be retreived from OSM not the cache
508
- # * :api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
509
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
510
- # * 'secret' (optional) the OSM secret belonging to the above user
511
- # @returns an array of hashes representing the attendance of each member
512
- def get_register(section_id, term_id=nil, options={})
513
- api_data = options[:api_data] || {}
449
+ # @param [FixNum] section_id the section to get details for
450
+ # @!macro options_get
451
+ # @!macro options_api_data
452
+ # @return [Array<Hash>] representing the attendance of each member
453
+ def get_register(section_id, term_id=nil, options={}, api_data={})
514
454
  term_id = Osm::find_current_term_id(self, section_id, api_data) if term_id.nil?
515
455
 
516
456
  if !options[:no_cache] && Rails.cache.exist?("OSMAPI-register-#{section_id}-#{term_id}") && self.user_can_access?(:register, section_id, api_data)
@@ -532,12 +472,10 @@ module Osm
532
472
  end
533
473
 
534
474
  # Create an evening in OSM
535
- # @param section_id the id of the section to add the term to
536
- # @param meeting_date the date of the meeting
537
- # @param api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
538
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
539
- # * 'secret' (optional) the OSM secret belonging to the above user
540
- # @returns a boolean representing if the operation suceeded or not
475
+ # @param [FixNum] section_id the id of the section to add the term to
476
+ # @param [Date] meeting_date the date of the meeting
477
+ # @!macro options_api_data
478
+ # @return [Boolean] if the operation suceeded or not
541
479
  def create_evening(section_id, meeting_date, api_data={})
542
480
  section_id = section_id.to_i
543
481
  evening_api_data = {
@@ -557,11 +495,9 @@ module Osm
557
495
  end
558
496
 
559
497
  # Update an evening in OSM
560
- # @param programme_item is the Osm::ProgrammeItem object to update
561
- # @param api_data (optional) a hash containing information to be sent to the server, it may contain the following keys:
562
- # * 'userid' (optional) the OSM userid to make the request as, this will override one provided using the set_user method
563
- # * 'secret' (optional) the OSM secret belonging to the above user
564
- # @returns a boolean representing if the operation suceeded or not
498
+ # @param [Osm::ProgrammeItem] programme_item is the Osm::ProgrammeItem object to update
499
+ # @!macro options_api_data
500
+ # @return [Boolean] if the operation suceeded or not
565
501
  def update_evening(programme_item, api_data={})
566
502
  response = perform_query("programme.php?action=editEvening", api_data.merge({
567
503
  'eveningid' => programme_item.evening_id,
@@ -590,10 +526,11 @@ module Osm
590
526
 
591
527
  protected
592
528
  # Set access permission for the current user on a resource stored in the cache
593
- # @param resource_type a symbol representing the resource type (:section, :grouping, :term, :activity, :programme, :member, :badge, :register)
594
- # @param resource_id the id of the resource being checked
595
- # @param api_data the data hash used in accessing the api
596
- # @param permission (optional, default true) wether the user can access the resource
529
+ # @param [Symbol] resource_type a symbol representing the resource type (:section, :grouping, :term, :activity, :programme, :member, :badge, :register)
530
+ # @param [FixNum] resource_id the id of the resource being checked
531
+ # @param [Hash] api_data the data hash used in accessing the api
532
+ # @param [Boolean] permission wether the user can access the resource
533
+ # @return [Boolean] the permission which was set
597
534
  def user_can_access(resource_type, resource_id, api_data, permission=true)
598
535
  user = (api_data['userid'] || @userid).to_i
599
536
  resource_id = resource_id.to_i
@@ -606,12 +543,11 @@ module Osm
606
543
  end
607
544
 
608
545
  # Get access permission for the current user on a resource stored in the cache
609
- # @param resource_type a symbol representing the resource type (:section, :grouping, :term, :activity, :programme, :member, :badge, :register)
610
- # @param resource_id the id of the resource being checked
611
- # @param api_data the data hash used in accessing the api
612
- # @returns true if the user can access the resource
613
- # @returns false if the user can not access the resource
614
- # @returns nil if the combination of user and resource has not been seen
546
+ # @param [Symbol] resource_type a symbol representing the resource type (:section, :grouping, :term, :activity, :programme, :member, :badge, :register)
547
+ # @param [FixNum] resource_id the id of the resource being checked
548
+ # @param [Hash] api_data the data hash used in accessing the api
549
+ # @return nil if the combination of user and resource has not been set
550
+ # @return [Boolean] if the user can access the resource
615
551
  def user_can_access?(resource_type, resource_id, api_data)
616
552
  user = (api_data['userid'] || @userid).to_i
617
553
  resource_id = resource_id.to_i
@@ -625,17 +561,17 @@ module Osm
625
561
 
626
562
  private
627
563
  # Set the OSM user to make future requests as
628
- # @param userid the OSM userid to use (get this using the authorize method)
629
- # @param secret the OSM secret to use (get this using the authorize method)
564
+ # @param [String] userid the OSM userid to use (get this using the authorize method)
565
+ # @param [String] secret the OSM secret to use (get this using the authorize method)
630
566
  def set_user(userid, secret)
631
567
  @userid = userid
632
568
  @secret = secret
633
569
  end
634
570
 
635
571
  # Make the query to the OSM API
636
- # @param url the script on the remote server to invoke
637
- # @param api_data (optional) a hash containing the values to be sent to the server
638
- # @returns the parsed JSON returned by OSM
572
+ # @param [String] url the script on the remote server to invoke
573
+ # @param [Hash] api_data a hash containing the values to be sent to the server
574
+ # @return [Hash, Array, String] the parsed JSON returned by OSM
639
575
  def perform_query(url, api_data={})
640
576
  api_data['apiid'] = @@api_id
641
577
  api_data['token'] = @@api_token
@@ -671,10 +607,17 @@ module Osm
671
607
  return decoded
672
608
  end
673
609
 
610
+ # Check if text looks like it's JSON
611
+ # @param [String] text what to look at
612
+ # @return [Boolean]
674
613
  def looks_like_json?(text)
675
614
  (['[', '{'].include?(text[0]))
676
615
  end
677
616
 
617
+ # Get the error returned by OSM
618
+ # @param data what OSM gave us
619
+ # @return false if no error message was found
620
+ # @return [String] the error message
678
621
  def get_osm_error(data)
679
622
  return false unless data.is_a?(Hash)
680
623
  to_return = data['error'] || data['err'] || false
@@ -3,6 +3,12 @@ module Osm
3
3
  class ApiAccess
4
4
 
5
5
  attr_reader :id, :name, :permissions
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for the API
8
+ # @!attribute [r] name
9
+ # @return [String] the name of the API
10
+ # @!attribute [r] permissions
11
+ # @return [Hash] the permissions assigned to this API by the user in OSM
6
12
 
7
13
  # Initialize a new API Access using the hash returned by the API call
8
14
  # @param data the hash of data for the object returned by the API
@@ -19,21 +25,21 @@ module Osm
19
25
  end
20
26
 
21
27
  # Determine if this API has read access for the provided permission
22
- # @param key - the key for the permission being queried
23
- # @returns - true if this API can read the passed permission, false otherwise
28
+ # @param [Symbol] key the permission being queried
29
+ # @return [Boolean] if this API can read the passed permission
24
30
  def can_read?(key)
25
31
  return [20, 10].include?(@permissions[key])
26
32
  end
27
33
 
28
34
  # Determine if this API has write access for the provided permission
29
- # @param key - the key for the permission being queried
30
- # @returns - true if this API can write the passed permission, false otherwise
35
+ # @param [Symbol] key the permission being queried
36
+ # @return [Boolean] if this API can write the passed permission
31
37
  def can_write?(key)
32
38
  return [20].include?(@permissions[key])
33
39
  end
34
40
 
35
41
  # Determine if this API is the API being used to make requests
36
- # @returns - true if this is the API being used, false otherwise
42
+ # @return [Boolean] if this is the API being used
37
43
  def our_api?
38
44
  return @id == Osm::Api.api_id.to_i
39
45
  end
@@ -3,6 +3,12 @@ module Osm
3
3
  class DueBadges
4
4
 
5
5
  attr_reader :descriptions, :by_member, :totals
6
+ # @!attribute [r] descriptions
7
+ # @return [Hash] descriptions for each of the badges
8
+ # @!attribute [r] by_member
9
+ # @return [Hash] the due badges grouped by member
10
+ # @!attribute [r] totals
11
+ # @return [Hash] the total number of each nadge which is due
6
12
 
7
13
  # Initialize a new Event using the hash returned by the API call
8
14
  # @param data the hash of data for the object returned by the API
@@ -44,6 +50,8 @@ module Osm
44
50
  end
45
51
  end
46
52
 
53
+ # Check if there are no badges due
54
+ # @return [Boolean]
47
55
  def empty?
48
56
  return @by_member.empty?
49
57
  end
@@ -3,6 +3,22 @@ module Osm
3
3
  class Event
4
4
 
5
5
  attr_reader :id, :section_id, :name, :start, :end, :cost, :location, :notes
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for the event
8
+ # @!attribute [r] section_id
9
+ # @return [FixNum] the id for the section
10
+ # @!attribute [r] name
11
+ # @return [String] the name of the event
12
+ # @!attribute [r] start
13
+ # @return [DateTime] when the event starts
14
+ # @!attribute [r] end
15
+ # @return [DateTime] when the event ends
16
+ # @!attribute [r] cost
17
+ # @return [?] the cost of the event
18
+ # @!attribute [r] location
19
+ # @return [String] where the event is
20
+ # @!attribute [r] notes
21
+ # @return [String] notes about the event
6
22
 
7
23
  # Initialize a new Event using the hash returned by the API call
8
24
  # @param data the hash of data for the object returned by the API
@@ -3,6 +3,14 @@ module Osm
3
3
  class Grouping
4
4
 
5
5
  attr_reader :id, :name, :active, :points
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for grouping
8
+ # @!attribute [r] name
9
+ # @return [String] the name of the grouping
10
+ # @!attribute [r] id
11
+ # @return [Boolean] wether the grouping is active
12
+ # @!attribute [r] points
13
+ # @return [FixNum] the points awarded to the grouping
6
14
 
7
15
  # Initialize a new Grouping using the hash returned by the API call
8
16
  # @param data the hash of data for the object returned by the API
@@ -3,6 +3,67 @@ module Osm
3
3
  class Member
4
4
 
5
5
  attr_reader :id, :section_id, :type, :first_name, :last_name, :email1, :email2, :email3, :email4, :phone1, :phone2, :phone3, :phone4, :address, :address2, :date_of_birth, :started, :joined_in_years, :parents, :notes, :medical, :religion, :school, :ethnicity, :subs, :grouping_id, :grouping_leader, :joined, :age, :joined_years
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for the member
8
+ # @!attribute [r] section_id
9
+ # @return [FixNum] the section the member belongs to
10
+ # @!attribute [r] type
11
+ # @return [?] ?
12
+ # @!attribute [r] first_name
13
+ # @return [String] the member's first name
14
+ # @!attribute [r] last_name
15
+ # @return [String] the imember's last name
16
+ # @!attribute [r] email1
17
+ # @return [String] the 1st email address for the member
18
+ # @!attribute [r] email2
19
+ # @return [String] the 2nd email address for the member
20
+ # @!attribute [r] email3
21
+ # @return [String] the 3rd email address for the member
22
+ # @!attribute [r] email4
23
+ # @return [String] the 4th email address for the member
24
+ # @!attribute [r] phone1
25
+ # @return [String] the 1st phone number for the member
26
+ # @!attribute [r] phone2
27
+ # @return [String] the 2nd phone number for the member
28
+ # @!attribute [r] phone3
29
+ # @return [String] the 3rd phone number for the member
30
+ # @!attribute [r] phone4
31
+ # @return [String] the 4th phone number for the member
32
+ # @!attribute [r] address
33
+ # @return [String] the member's address
34
+ # @!attribute [r] address2
35
+ # @return [String] the member's 2nd address
36
+ # @!attribute [r] date_of_birth
37
+ # @return [Date] the member's date of birth
38
+ # @!attribute [r] started
39
+ # @return [Date] when the member started Scouting
40
+ # @!attribute [r] joined_in_years
41
+ # @return [FixNum] thow many full years the member has been in Scouting
42
+ # @!attribute [r] parents
43
+ # @return [String] the member's parent's names
44
+ # @!attribute [r] notes
45
+ # @return [String] notes relating to the member
46
+ # @!attribute [r] medical
47
+ # @return [String] the member's key medical details
48
+ # @!attribute [r] religion
49
+ # @return [String] the member's religion
50
+ # @!attribute [r] school
51
+ # @return [String] the school the member attends
52
+ # @!attribute [r] ethnicity
53
+ # @return [String] the member's ethnicity
54
+ # @!attribute [r] subs
55
+ # @return [String] details about the member's subs
56
+ # @!attribute [r] grouping_id
57
+ # @return [FixNum] the grouping within the section that the member belongs to
58
+ # @!attribute [r] grouping_leader
59
+ # @return [FixNum] wether the member is the grouping leader (0=no, 1=seconder/APL, 2=sixer/PL)
60
+ # @!attribute [r] joined
61
+ # @return [Date] when the member joined the section
62
+ # @!attribute [r] age
63
+ # @return [String] the member's current age (yy/mm)
64
+ # @!attribute [r] joined_years
65
+ # @return [FixNum] ?
66
+
6
67
 
7
68
  # Initialize a new Member using the hash returned by the API call
8
69
  # @param data the hash of data for the object returned by the API
@@ -40,20 +101,20 @@ module Osm
40
101
  end
41
102
 
42
103
  # Get the years element of this scout's age
43
- # @returns the number of years this scout has been alive
104
+ # @return [FixNum] the number of years this scout has been alive
44
105
  def age_years
45
106
  return @age[0..1].to_i
46
107
  end
47
108
 
48
109
  # Get the months element of this scout's age
49
- # @returns the number of months since this scout's last birthday
110
+ # @return [FixNum] the number of months since this scout's last birthday
50
111
  def age_months
51
112
  return @age[-2..-1].to_i
52
113
  end
53
114
 
54
115
  # Get the full name
55
- # @param seperator (optional) what to split the scout's first name and last name with, defaults to a space
56
- # @returns this scout's full name seperate by the optional seperator
116
+ # @param [String] seperator what to split the scout's first name and last name with
117
+ # @return [String] this scout's full name seperated by the optional seperator
57
118
  def name(seperator=' ')
58
119
  return "#{@first_name}#{seperator.to_s}#{@last_name}"
59
120
  end
@@ -3,6 +3,14 @@ module Osm
3
3
  class ProgrammeActivity
4
4
 
5
5
  attr_reader :evening_id, :activity_id, :title, :notes
6
+ # @!attribute [r] eveing_id
7
+ # @return [FixNum] the evening the activity is being done
8
+ # @!attribute [r] activity_id
9
+ # @return [FixNum] the activity being done
10
+ # @!attribute [r] title
11
+ # @return [String] the activity's title
12
+ # @!attribute [r] notes
13
+ # @return [String] tnotes relevant to doing this activity on this evening
6
14
 
7
15
  # Initialize a new EveningActivity using the hash returned by the API call
8
16
  # @param data the hash of data for the object returned by the API
@@ -4,6 +4,32 @@ module Osm
4
4
 
5
5
  attr_accessor :evening_id, :section_id, :title, :notes_for_parents, :games, :pre_notes, :post_notes, :leaders, :meeting_date, :activities, :google_calendar
6
6
  attr_reader :start_time, :end_time
7
+ # @!attribute [rw] evening_id
8
+ # @return [FixNum] the id of the evening
9
+ # @!attribute [rw] sectionid
10
+ # @return [FixNum] the section the evening belongs to
11
+ # @!attribute [rw] title
12
+ # @return [String] the title of the evening
13
+ # @!attribute [rw] notes_for_parents
14
+ # @return [String] notes to be shared with parents
15
+ # @!attribute [rw] games
16
+ # @return [String] games to be played during the evening
17
+ # @!attribute [rw] pre_notes
18
+ # @return [String] notes for the start of the evening
19
+ # @!attribute [rw] post_notes
20
+ # @return [String] notes for the end of the evening
21
+ # @!attribute [rw] leaders
22
+ # @return [String] the leaders present at the evening
23
+ # @!attribute [rw] meeting_date
24
+ # @return [Date] the date of the evening
25
+ # @!attribute [rw] activities
26
+ # @return [Array<ProgrammeActivity>] tlist of activities being done during the evening
27
+ # @!attribute [rw] google_calendar
28
+ # @return [String] ?
29
+ # @!attribute [rw] start_time
30
+ # @return [String] the start time (hh:mm)
31
+ # @!attribute [rw] end_time
32
+ # @return [String] the end time (hh:mm)
7
33
 
8
34
  # Initialize a new ProgrammeItem using the hash returned by the API call
9
35
  # @param data the hash of data for the object returned by the API
@@ -41,6 +67,9 @@ module Osm
41
67
  end
42
68
  end
43
69
 
70
+
71
+ # Get the JSON for the activitied to pass to the OSM API
72
+ # @return [String]
44
73
  def activities_for_saving
45
74
  to_save = Array.new
46
75
  @activities.each do |activity|
@@ -3,6 +3,18 @@ module Osm
3
3
  class Role
4
4
 
5
5
  attr_reader :section, :group_name, :group_id, :group_normalized, :default, :permissions
6
+ # @!attribute [r] section
7
+ # @return [Osm::Section] the section this role related to
8
+ # @!attribute [r] group_name
9
+ # @return [String] the name of the group the section is in
10
+ # @!attribute [r] group_id
11
+ # @return [FixNum] the group the section is in
12
+ # @!attribute [r] group_normalized
13
+ # @return [FixNum] ?
14
+ # @!attribute [r] default
15
+ # @return [Boolean] was this the last section this user used in OSM
16
+ # @!attribute [r] permissions
17
+ # @return [Hash] the permissions the user has in this role
6
18
 
7
19
  # Initialize a new UserRole using the hash returned by the API call
8
20
  # @param data the hash of data for the object returned by the API
@@ -21,27 +33,27 @@ module Osm
21
33
  end
22
34
 
23
35
  # Determine if this role has read access for the provided permission
24
- # @param key - the key for the permission being queried
25
- # @returns - true if this role can read the passed permission, false otherwise
36
+ # @param [Symbol] key the permission being queried
37
+ # @return [Boolean] if this role can read the passed permission
26
38
  def can_read?(key)
27
39
  return [10, 20, 100].include?(@permissions[key])
28
40
  end
29
41
 
30
42
  # Determine if this role has write access for the provided permission
31
- # @param key - the key for the permission being queried
32
- # @returns - true if this role can write the passed permission, false otherwise
43
+ # @param [Symbol] key the permission being queried
44
+ # @return [Boolean] if this role can write the passed permission
33
45
  def can_write?(key)
34
46
  return [20, 100].include?(@permissions[key])
35
47
  end
36
48
 
37
- # Get section's full name in a consistent format
38
- # @returns a string e.g. "Scouts (1st Somewhere)"
49
+ # Get section's long name in a consistent format
50
+ # @return [String] e.g. "Scouts (1st Somewhere)"
39
51
  def long_name
40
52
  @group_name.blank? ? @section.name : "#{@section.name} (#{@group_name})"
41
53
  end
42
54
 
43
55
  # Get section's full name in a consistent format
44
- # @returns a string e.g. "1st Somewhere Beavers"
56
+ # @return [String] e.g. "1st Somewhere Beavers"
45
57
  def full_name
46
58
  @group_name.blank? ? @section.name : "#{@group_name} #{@section.name}"
47
59
  end
@@ -3,6 +3,37 @@ module Osm
3
3
  class Section
4
4
 
5
5
  attr_reader :id, :name, :subscription_level, :subscription_expires, :type, :num_scouts, :has_badge_records, :has_programme, :wizard, :column_names, :fields, :intouch_fields, :mobile_fields, :extra_records, :role
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for the section
8
+ # @!attribute [r] name
9
+ # @return [String] the section name
10
+ # @!attribute [r] subscription_level
11
+ # @return [Symbol] what subscription the section has to OSM (:bronze, :silver or :gold)
12
+ # @!attribute [r] subscription_expires
13
+ # @return [Date] when the section's subscription to OSM expires
14
+ # @!attribute [r] type
15
+ # @return [Symbol] the section type (:beavers, :cubs, :scouts, :exporers, :adults, :waiting, :unknown)
16
+ # @!attribute [r] num_scouts
17
+ # @return [FixNum] how many members the section has
18
+ # @!attribute [r] has_badge_records
19
+ # @return [Boolean] ?
20
+ # @!attribute [r] has_programme
21
+ # @return [Boolean] ?
22
+ # @!attribute [r] wizard
23
+ # @return [Boolean] ?
24
+ # @!attribute [r] column_names
25
+ # @return [Hash] custom names to use for the data columns
26
+ # @!attribute [r] fields
27
+ # @return [Hash] which columns are shown in OSM
28
+ # @!attribute [r] intouch_fields
29
+ # @return [Hash] which columns are shown in OSM's in touch reports
30
+ # @!attribute [r] mobile_fields
31
+ # @return [Hash] which columns are shown in the OSM mobile app
32
+ # @!attribute [r] extraRecords
33
+ # @return [Array<hash>] list of the extra records the section has
34
+ # @!attribute [r] role
35
+ # @return [Osm::Role] the role linking the user to this section
36
+
6
37
 
7
38
  # Initialize a new SectionConfig using the hash returned by the API call
8
39
  # @param id the section ID used by the API to refer to this section
@@ -39,11 +70,31 @@ module Osm
39
70
  end
40
71
  end
41
72
 
73
+ # Check if this section is one of the youth sections
74
+ # @return [Boolean]
42
75
  def youth_section?
43
76
  [:beavers, :cubs, :scouts, :explorers].include?(@type)
44
77
  end
45
78
 
46
79
  # Custom section type checkers
80
+ # @!method beavers?
81
+ # Check if this is a Beavers section
82
+ # @return (Boolean)
83
+ # @!method cubs?
84
+ # Check if this is a Cubs section
85
+ # @return (Boolean)
86
+ # @!method scouts?
87
+ # Check if this is a Scouts section
88
+ # @return (Boolean)
89
+ # @!method explorers?
90
+ # Check if this is an Explorers section
91
+ # @return (Boolean)
92
+ # @!method adults?
93
+ # Check if this is an Adults section
94
+ # @return (Boolean)
95
+ # @!method waiting?
96
+ # Check if this is a waiting list
97
+ # @return (Boolean)
47
98
  [:beavers, :cubs, :scouts, :explorers, :adults, :waiting].each do |attribute|
48
99
  define_method "#{attribute}?" do
49
100
  @type == attribute
@@ -3,6 +3,16 @@ module Osm
3
3
  class Term
4
4
 
5
5
  attr_reader :id, :section_id, :name, :start, :end
6
+ # @!attribute [r] id
7
+ # @return [FixNum] the id for the term
8
+ # @!attribute [r] section_id
9
+ # @return [FixNum] the section the term belongs to
10
+ # @!attribute [r] name
11
+ # @return [FixNum] the name of the term
12
+ # @!attribute [r] start
13
+ # @return [Date] when the term starts
14
+ # @!attribute [r] end
15
+ # @return [Date] when the term ends
6
16
 
7
17
  # Initialize a new Term using the hash returned by the API call
8
18
  # @param data the hash of data for the object returned by the API
@@ -15,40 +25,40 @@ module Osm
15
25
  end
16
26
 
17
27
  # Determine if the term is completly before the passed date
18
- # @param date
19
- # @returns true if the term is completly before the passed date
28
+ # @param [Date] date
29
+ # @return [Boolean] if the term is completly before the passed date
20
30
  def before?(date)
21
31
  return @end < date.to_date
22
32
  end
23
33
 
24
34
  # Determine if the term is completly after the passed date
25
- # @param date
26
- # @returns true if the term is completly after the passed date
35
+ # @param [Date] date
36
+ # @return [Boolean] if the term is completly after the passed date
27
37
  def after?(date)
28
38
  return @start > date.to_date
29
39
  end
30
40
 
31
41
  # Determine if the term is in the future
32
- # @returns true if the term starts after today
42
+ # @return [Boolean] if the term starts after today
33
43
  def future?
34
44
  return @start > Date.today
35
45
  end
36
46
 
37
47
  # Determine if the term is in the past
38
- # @returns true if the term finished before today
48
+ # @return [Boolean] if the term finished before today
39
49
  def past?
40
50
  return @end < Date.today
41
51
  end
42
52
 
43
53
  # Determine if the term is current
44
- # @returns true if the term started before today and finishes after today
54
+ # @return [Boolean] if the term started before today and finishes after today
45
55
  def current?
46
56
  return (@start <= Date.today) && (@end >= Date.today)
47
57
  end
48
58
 
49
59
  # Determine if the provided date is within the term
50
- # @param date the date to test
51
- # @returns true if the term started before the date and finishes after the date
60
+ # @param [Date] date the date to test
61
+ # @return [Boolean] if the term started before the date and finishes after the date
52
62
  def contains_date?(date)
53
63
  return (@start <= date) && (@end >= date)
54
64
  end
@@ -465,7 +465,7 @@ describe "API" do
465
465
  }
466
466
 
467
467
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"1":"Section 1"}'}) }
468
- Osm::Api.new('1', '2').get_notepads(:api_data => {'userid'=>'user', 'secret'=>'secret'}).should == {1 => 'Section 1'}
468
+ Osm::Api.new('1', '2').get_notepads({}, {'userid'=>'user', 'secret'=>'secret'}).should == {1 => 'Section 1'}
469
469
  end
470
470
  end
471
471
 
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
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.0.5
4
+ version: 0.0.6
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-07-31 00:00:00.000000000Z
12
+ date: 2012-08-01 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &72147560 !ruby/object:Gem::Requirement
16
+ requirement: &80730730 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.2.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *72147560
24
+ version_requirements: *80730730
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &72146620 !ruby/object:Gem::Requirement
27
+ requirement: &80713860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.2'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *72146620
35
+ version_requirements: *80713860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: httparty
38
- requirement: &72145990 !ruby/object:Gem::Requirement
38
+ requirement: &80710730 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *72145990
46
+ version_requirements: *80710730
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &72145330 !ruby/object:Gem::Requirement
49
+ requirement: &80697000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *72145330
57
+ version_requirements: *80697000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &72119020 !ruby/object:Gem::Requirement
60
+ requirement: &80694320 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *72119020
68
+ version_requirements: *80694320
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fakeweb
71
- requirement: &72117720 !ruby/object:Gem::Requirement
71
+ requirement: &80680900 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *72117720
79
+ version_requirements: *80680900
80
80
  description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
81
81
  to retrieve and save data.
82
82
  email: