osm 1.2.22 → 1.2.23

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5a1c77bba99130c55b0574c0a890c685e99611c2
4
+ data.tar.gz: 5b81b4165fbd1244ae170f310e5968aa5ffa76ad
5
+ SHA512:
6
+ metadata.gz: 996af429a7bc3cebae38f122bffc7b3201e16f61d55a54c4320f83ac1501023bb94ff87d23da474bdf92883828741fdf91b832dc82c01c89aed995eb9bf69631
7
+ data.tar.gz: 087c903f06680b4216c16809dad00b3303b689814c6dc631a25d796154eaf48e39ea9c2a98f3e9cba364e3e1e81cad08e2517a6a94710b62488386c9975b0034
@@ -14,4 +14,5 @@ branches:
14
14
  - staging
15
15
  - /gh(?:\d)+(?:-.+)?/
16
16
  - /dev_ver_\d+\.\d+/
17
+ before_install: gem update bundler
17
18
  script: rake ci:travis
@@ -1,3 +1,11 @@
1
+ ## Version 1.2.23
2
+
3
+ * Geting list of user roles for getting sections and permissions now done using the get_user_roles method of api instances
4
+ * When user has no roles in OSM:
5
+ * get_user_roles will return an empty Array
6
+ * get_user_roles! (new method) will raise an Osm::NoActiveRoles exception
7
+ * Fix 'undefined local method or variable fetch_from_osm' when retrieving badges
8
+
1
9
  ## Version 1.2.22
2
10
 
3
11
  * Fix marking badge as due when not passing a level
data/lib/osm.rb CHANGED
@@ -12,6 +12,7 @@ module Osm
12
12
  class Error < Exception; end
13
13
  class ConnectionError < Error; end
14
14
  class Forbidden < Osm::Error; end
15
+ class NoActiveRoles < Osm::Error; end
15
16
  class ArgumentIsInvalid < ArgumentError; end
16
17
  class ObjectIsInvalid < Error; end
17
18
  class Osm::Error::NoCurrentTerm < Osm::Error
@@ -5,6 +5,8 @@ module Osm
5
5
  class File; end # Ensure the constant exists for the validators
6
6
  class Version; end # Ensure the constant exists for the validators
7
7
 
8
+ SORT_BY = [:id, :version]
9
+
8
10
  # @!attribute [rw] id
9
11
  # @return [Fixnum] the id for the activity
10
12
  # @!attribute [rw] version
@@ -274,13 +276,6 @@ module Osm
274
276
  end
275
277
  end
276
278
 
277
- # Compare Activity based on id then version
278
- def <=>(another)
279
- result = self.id <=> another.try(:id)
280
- result = self.version <=> another.try(:version) if result == 0
281
- return result
282
- end
283
-
284
279
 
285
280
  private
286
281
  class File
@@ -169,6 +169,44 @@ module Osm
169
169
  }))
170
170
  end
171
171
 
172
+ # Get API user's roles in OSM
173
+ # @!macro options_get
174
+ # @return [Array<Hash>] data returned by OSM
175
+ def get_user_roles(*args)
176
+ begin
177
+ get_user_roles!(*args)
178
+ rescue Osm::NoActiveRoles
179
+ return []
180
+ end
181
+ end
182
+
183
+
184
+ # Get API user's roles in OSM
185
+ # @!macro options_get
186
+ # @return [Array<Hash>] data returned by OSM
187
+ # @raises Osm::NoActiveRoles
188
+ def get_user_roles!(options={})
189
+ cache_key = ['user_roles', @user_id]
190
+
191
+ if !options[:no_cache] && Osm::Model.cache_exist?(self, cache_key)
192
+ return Osm::Model.cache_read(self, cache_key)
193
+ end
194
+
195
+ begin
196
+ data = perform_query('api.php?action=getUserRoles')
197
+ Osm::Model.cache_write(self, cache_key, data)
198
+ return data
199
+
200
+ rescue Osm::Error => e
201
+ if e.message.eql?('false')
202
+ fail Osm::NoActiveRoles, "You do not have any active roles in OSM."
203
+ else
204
+ raise e
205
+ end
206
+ end
207
+
208
+ end
209
+
172
210
  # Get API user's permissions
173
211
  # @!macro options_get
174
212
  # @return nil if an error occured or the user does not have access to that section
@@ -180,10 +218,8 @@ module Osm
180
218
  return Osm::Model.cache_read(self, cache_key)
181
219
  end
182
220
 
183
- data = perform_query('api.php?action=getUserRoles')
184
-
185
221
  all_permissions = Hash.new
186
- data.each do |item|
222
+ get_user_roles(options).each do |item|
187
223
  unless item['section'].eql?('discount') # It's not an actual section
188
224
  all_permissions.merge!(Osm::to_i_or_nil(item['sectionid']) => Osm.make_permissions_hash(item['permissions']))
189
225
  end
@@ -242,25 +278,22 @@ module Osm
242
278
  return nil if result.response.body.empty?
243
279
  case result.response.content_type
244
280
  when 'application/json', 'text/html'
245
- raise Osm::Error, result.response.body unless looks_like_json?(result.response.body)
246
- decoded = ActiveSupport::JSON.decode(result.response.body)
247
- osm_error = get_osm_error(decoded)
248
- raise Osm::Error, osm_error if osm_error
249
- return decoded
281
+ begin
282
+ decoded = ActiveSupport::JSON.decode(result.response.body)
283
+ if osm_error = get_osm_error(decoded)
284
+ fail Osm::Error, osm_error if osm_error
285
+ end
286
+ return decoded
287
+ rescue ActiveModel::VERSION::MAJOR.eql?(4) ? JSON::ParserError : MultiJson::ParseError
288
+ fail Osm::Error, result.response.body
289
+ end
250
290
  when 'image/jpeg'
251
291
  return result.response.body
252
292
  else
253
- raise Osm::Error, "Unhandled content-type: #{result.response.content_type}"
293
+ fail Osm::Error, "Unhandled content-type: #{result.response.content_type}"
254
294
  end
255
295
  end
256
296
 
257
- # Check if text looks like it's JSON
258
- # @param [String] text What to look at
259
- # @return [Boolean]
260
- def self.looks_like_json?(text)
261
- (['[', '{'].include?(text[0]))
262
- end
263
-
264
297
  # Get the error returned by OSM
265
298
  # @param data what OSM gave us
266
299
  # @return false if no error message was found
@@ -324,14 +324,14 @@ module Osm
324
324
  @module_completion_data = get_module_completion_data(api, options) if fetched_this_time
325
325
 
326
326
  if @module_completion_data[badge.id].nil? && !fetched_this_time
327
- @module_completion_data = fetch_from_osm
327
+ @module_completion_data = get_module_completion_data(api, options)
328
328
  fetched_this_time = true
329
329
  end
330
330
  data = @module_completion_data[badge.id]
331
331
  raise ArgumentError, "That badge does't exist (bad ID)." if data.nil?
332
332
 
333
333
  if data[badge.version].nil? && !fetched_this_time
334
- @module_completion_data = fetch_from_osm
334
+ @module_completion_data = get_module_completion_data(api, options)
335
335
  data = @module_completion_data[badge.id]
336
336
  fetched_this_time = true
337
337
  end
@@ -511,6 +511,8 @@ module Osm
511
511
 
512
512
 
513
513
  class Data < Osm::Model
514
+ SORT_BY = [:badge, :section_id, :member_id]
515
+
514
516
  # @!attribute [rw] member_id
515
517
  # @return [Fixnum] ID of the member this data relates to
516
518
  # @!attribute [rw] first_name
@@ -843,14 +845,6 @@ module Osm
843
845
  return requirements_updated && due_updated && awarded_updated
844
846
  end
845
847
 
846
- # Compare Badge::Data based on badge, section_id then member_id
847
- def <=>(another)
848
- result = self.badge <=> another.try(:badge)
849
- result = self.section_id <=> another.try(:section_id) if result == 0
850
- result = self.member_id <=> another.try(:member_id) if result == 0
851
- return result
852
- end
853
-
854
848
  def inspect
855
849
  Osm.inspect_instance(self, {:replace_with => {'badge' => :name}})
856
850
  end
@@ -1,6 +1,8 @@
1
1
  module Osm
2
2
 
3
3
  class Budget < Osm::Model
4
+ SORT_BY = [:section_id, :name]
5
+
4
6
  # @!attribute [rw] id
5
7
  # @return [Fixnum] The OSM ID for the budget
6
8
  # @!attribute [rw] section_id
@@ -125,14 +127,6 @@ module Osm
125
127
  return false
126
128
  end
127
129
 
128
-
129
- # Compare Budget based on section_id then name
130
- def <=>(another)
131
- result = self.section_id <=> another.try(:section_id)
132
- result = self.name <=> another.try(:name) if result == 0
133
- return result
134
- end
135
-
136
130
  end # Class Budget
137
131
 
138
132
  end
@@ -6,6 +6,7 @@ module Osm
6
6
 
7
7
  LIST_ATTRIBUTES = [:id, :section_id, :name, :start, :finish, :cost, :location, :notes, :archived, :public_notepad, :confirm_by_date, :allow_changes, :reminders, :attendance_limit, :attendance_limit_includes_leaders, :attendance_reminder, :allow_booking]
8
8
  EXTRA_ATTRIBUTES = [:notepad, :columns, :badges]
9
+ SORT_BY = [:start, :name, :id]
9
10
 
10
11
  # @!attribute [rw] id
11
12
  # @return [Fixnum] the id for the event
@@ -501,15 +502,6 @@ module Osm
501
502
  cost.eql?('0.00')
502
503
  end
503
504
 
504
- # Compare Event based on start, name then id
505
- def <=>(another)
506
- return 0 if self.id == another.try(:id)
507
- result = self.start <=> another.try(:start)
508
- result = self.name <=> another.try(:name) if result == 0
509
- result = self.id <=> another.try(:id) if result == 0
510
- return result
511
- end
512
-
513
505
 
514
506
  private
515
507
  def attendees(api)
@@ -581,6 +573,8 @@ module Osm
581
573
  include ActiveModel::MassAssignmentSecurity if ActiveModel::VERSION::MAJOR < 4
582
574
  include ActiveAttr::Model
583
575
 
576
+ SORT_BY = [:badge_section, :badge_type, :badge_name, :requirement_label]
577
+
584
578
  # @!attribute [rw] badge_type
585
579
  # @return [Symbol] the type of badge
586
580
  # @!attribute [rw] badge_section
@@ -622,19 +616,12 @@ module Osm
622
616
  # Initialize a new Meeting::Activity
623
617
  # @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
624
618
 
625
- # Compare BadgeLink based on section, type, badge_name, requirement_label, data
626
- def <=>(another)
627
- [:badge_section, :badge_type, :badge_name, :requirement_label].each do |attribute|
628
- result = self.try(:data) <=> another.try(:data)
629
- return result unless result == 0
630
- end
631
- return self.try(:data) <=> another.try(:data)
632
- end
633
-
634
619
  end # Class Event::BadgeLink
635
620
 
636
621
 
637
622
  class Column < Osm::Model
623
+ SORT_BY = [:event, :id]
624
+
638
625
  # @!attribute [rw] id
639
626
  # @return [String] OSM id for the column
640
627
  # @!attribute [rw] name
@@ -717,13 +704,6 @@ module Osm
717
704
  return true
718
705
  end
719
706
 
720
- # Compare Column based on event then id
721
- def <=>(another)
722
- result = self.event <=> another.try(:event)
723
- result = self.id <=> another.try(:id) if result == 0
724
- return result
725
- end
726
-
727
707
  def inspect
728
708
  Osm.inspect_instance(self, options={:replace_with => {'event' => :id}})
729
709
  end
@@ -732,6 +712,8 @@ module Osm
732
712
 
733
713
 
734
714
  class Attendance < Osm::Model
715
+ SORT_BY = [:event, :row]
716
+
735
717
  # @!attribute [rw] member_id
736
718
  # @return [Fixnum] OSM id for the member
737
719
  # @!attribute [rw] grouping__id
@@ -943,13 +925,6 @@ module Osm
943
925
  end
944
926
  end
945
927
 
946
- # Compare Attendance based on event then row
947
- def <=>(another)
948
- result = self.event <=> another.try(:event)
949
- result = self.row <=> another.try(:row) if result == 0
950
- return result
951
- end
952
-
953
928
  def inspect
954
929
  Osm.inspect_instance(self, options={:replace_with => {'event' => :id}})
955
930
  end
@@ -238,6 +238,8 @@ module Osm
238
238
 
239
239
 
240
240
  class Data < Osm::Model
241
+ SORT_BY = [:flexi_record, :grouping_id, :member_id]
242
+
241
243
  # @!attribute [rw] flexi_record
242
244
  # @return [Boolean] The FlexiRecord this column belongs to
243
245
  # @!attribute [rw] member_id
@@ -134,6 +134,8 @@ module Osm
134
134
  end
135
135
 
136
136
  class Donation < Osm::Model
137
+ SORT_BY = [:donation_date]
138
+
137
139
  # @!attribute [rw] donation_date
138
140
  # @return [Date] When the payment was made
139
141
 
@@ -151,15 +153,12 @@ module Osm
151
153
  # @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
152
154
 
153
155
 
154
- # Compare Payment based on donation_date then note
155
- def <=>(another)
156
- return self.donation_date <=> another.try(:donation_date)
157
- end
158
-
159
156
  end # Class GiftAid::Donation
160
157
 
161
158
 
162
159
  class Data < Osm::Model
160
+ SORT_BY = [:section_id, :grouping_id, :last_name, :first_name]
161
+
163
162
  # @!attribute [rw] member_id
164
163
  # @return [Fixnum] The OSM ID for the member
165
164
  # @!attribute [rw] grouping_id
@@ -279,16 +278,6 @@ module Osm
279
278
  return updated
280
279
  end
281
280
 
282
-
283
- # Compare Data based on section_id, grouping_id, last_name then first_name
284
- def <=>(another)
285
- result = self.section_id <=> another.try(:section_id)
286
- result = self.grouping_id <=> another.try(:grouping_id) if result == 0
287
- result = self.last_name <=> another.try(:last_name) if result == 0
288
- result = self.first_name <=> another.try(:last_name) if result == 0
289
- return result
290
- end
291
-
292
281
  end # Class GiftAid::Data
293
282
 
294
283
  end # Class GiftAid
@@ -1,6 +1,7 @@
1
1
  module Osm
2
2
 
3
3
  class Grouping < Osm::Model
4
+ SORT_BY = [:section_id, :name]
4
5
 
5
6
  # @!attribute [rw] id
6
7
  # @return [Fixnum] the id for grouping
@@ -106,13 +107,6 @@ module Osm
106
107
  return result
107
108
  end
108
109
 
109
- # Compare Grouping based on section_id then name
110
- def <=>(another)
111
- result = self.section_id <=> another.try(:section_id)
112
- result = self.name <=> another.try(:name) if result == 0
113
- return result
114
- end
115
-
116
110
  end # Class Grouping
117
111
 
118
112
  end # Module
@@ -1,6 +1,8 @@
1
1
  module Osm
2
2
 
3
3
  class Invoice < Osm::Model
4
+ SORT_BY = [:section_id, :name, :date]
5
+
4
6
  # @!attribute [rw] id
5
7
  # @return [Fixnum] The OSM ID for the invoice
6
8
  # @!attribute [rw] section_id
@@ -239,14 +241,6 @@ module Osm
239
241
  return items
240
242
  end
241
243
 
242
- # Compare Invoice based on section_id, name then date
243
- def <=>(another)
244
- result = self.section_id <=> another.try(:section_id)
245
- result = self.name <=> another.try(:name) if result == 0
246
- result = self.date <=> another.try(:date) if result == 0
247
- return result
248
- end
249
-
250
244
 
251
245
  private
252
246
  def self.new_invoice_from_data(invoice_data)
@@ -266,6 +260,8 @@ module Osm
266
260
 
267
261
 
268
262
  class Item < Osm::Model
263
+ SORT_BY = [:invoice, :date]
264
+
269
265
  # @!attribute [rw] id
270
266
  # @return [Fixnum] The OSM ID for the invoice item
271
267
  # @!attribute [rw] invoice
@@ -415,13 +411,6 @@ module Osm
415
411
  return 0.0
416
412
  end
417
413
 
418
- # Compare Invoice Item based on invoice then date
419
- def <=>(another)
420
- result = self.invoice <=> another.try(:invoice)
421
- result = self.date <=> another.try(:date) if result == 0
422
- return result
423
- end
424
-
425
414
  end # class Invoice::Item
426
415
 
427
416
  end # class Invoice
@@ -360,6 +360,7 @@ module Osm
360
360
  # Initialize a new Meeting::Activity
361
361
  # @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
362
362
 
363
+
363
364
  # Compare Activity based on title then activity_id
364
365
  def <=>(another)
365
366
  result = self.title <=> another.try(:title)
@@ -374,6 +375,8 @@ module Osm
374
375
  include ActiveModel::MassAssignmentSecurity if ActiveModel::VERSION::MAJOR < 4
375
376
  include ActiveAttr::Model
376
377
 
378
+ SORT_BY = [:badge_section, :badge_type, :badge_name, :requirement_label]
379
+
377
380
  # @!attribute [rw] badge_type
378
381
  # @return [Symbol] the type of badge
379
382
  # @!attribute [rw] badge_section
@@ -415,15 +418,6 @@ module Osm
415
418
  # Initialize a new Meeting::Activity
416
419
  # @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
417
420
 
418
- # Compare BadgeLink based on section, type, badge_name, requirement_label, data
419
- def <=>(another)
420
- [:badge_section, :badge_type, :badge_name, :requirement_label].each do |attribute|
421
- result = self.try(:data) <=> another.try(:data)
422
- return result unless result == 0
423
- end
424
- return self.try(:data) <=> another.try(:data)
425
- end
426
-
427
421
  end # Class Meeting::BadgeLink
428
422
 
429
423
  end # Class Meeting
@@ -11,6 +11,8 @@ module Osm
11
11
  include ActiveModel::MassAssignmentSecurity if ActiveModel::VERSION::MAJOR < 4
12
12
  include ActiveAttr::Model
13
13
 
14
+ SORT_BY = [:id]
15
+
14
16
  @@cache = nil # Class to use for caching
15
17
  @@cache_prepend = 'OSMAPI' # Prepended to the key
16
18
  @@cache_ttl = 600 # 10 minutes
@@ -43,12 +45,13 @@ module Osm
43
45
  id.to_i
44
46
  end
45
47
 
46
- # Default compare based on id
48
+ # Compare functions
47
49
  def <=>(another)
48
- return self.id <=> another.try(:id)
50
+ us_values = self.class::SORT_BY.map{ |i| self.try(i) }
51
+ them_values = self.class::SORT_BY.map{ |i| another.try(i) }
52
+ us_values <=> them_values
49
53
  end
50
54
 
51
- # Add other compare functions
52
55
  def <(another)
53
56
  send('<=>', another) < 0
54
57
  end
@@ -158,16 +158,12 @@ module Osm
158
158
  # Initialize a new RegisterField
159
159
  # @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
160
160
 
161
-
162
- # Compare Field based on id then version
163
- def <=>(another)
164
- return self.id <=> another.try(:id)
165
- end
166
-
167
161
  end # Class Register::Field
168
162
 
169
163
 
170
164
  class Attendance < Osm::Model
165
+ SORT_BY = [:section_id, :grouping_id, :last_name, :first_name]
166
+
171
167
  # @!attribute [rw] member_id
172
168
  # @return [Fixnum] The OSM ID for the member
173
169
  # @!attribute [rw] grouping_id
@@ -224,16 +220,6 @@ module Osm
224
220
  attendance[date] != :yes
225
221
  end
226
222
 
227
-
228
- # Compare Attendance based on section_id, grouping_id, last_name then first_name
229
- def <=>(another)
230
- result = self.section_id <=> another.try(:section_id)
231
- result = self.grouping_id <=> another.try(:grouping_id) if result == 0
232
- result = self.last_name <=> another.try(:last_name) if result == 0
233
- result = self.first_name <=> another.try(:last_name) if result == 0
234
- return result
235
- end
236
-
237
223
  end # Class Register::Attendance
238
224
 
239
225
  end # Class Register
@@ -153,12 +153,10 @@ module Osm
153
153
  return get_from_ids(api, ids, 'section', options, :get_all)
154
154
  end
155
155
 
156
- data = api.perform_query('api.php?action=getUserRoles')
157
-
158
156
  result = Array.new
159
157
  ids = Array.new
160
158
  permissions = Hash.new
161
- data.each do |role_data|
159
+ api.get_user_roles(options).each do |role_data|
162
160
  next if role_data['section'].eql?('discount') # It's not an actual section
163
161
  next if role_data['sectionConfig'].nil? # No config for the section = user hasn't got access
164
162
 
@@ -1,6 +1,7 @@
1
1
  module Osm
2
2
 
3
3
  class Term < Osm::Model
4
+ SORT_BY = [:section_id, :start, :id]
4
5
 
5
6
  # @!attribute [rw] id
6
7
  # @return [Fixnum] the id for the term
@@ -232,14 +233,6 @@ module Osm
232
233
  return (start <= date) && (finish >= date)
233
234
  end
234
235
 
235
- # Compare Term based on section_id, start then id
236
- def <=>(another_term)
237
- result = self.section_id <=> another_term.section_id
238
- result = self.start <=> another_term.start if result == 0
239
- result = self.id <=> another_term.id if result == 0
240
- return result
241
- end
242
-
243
236
  end # Class Term
244
237
 
245
238
  end # Module
@@ -72,6 +72,31 @@ describe "API" do
72
72
  end
73
73
 
74
74
 
75
+ describe "Get user roles" do
76
+
77
+ before :each do
78
+ @api = Osm::Api.new(3, 4)
79
+ end
80
+
81
+ it "Returns what OSM gives on success" do
82
+ @api.stub(:perform_query).with('api.php?action=getUserRoles'){ ['a', 'b'] }
83
+ @api.get_user_roles.should == ['a', 'b']
84
+ end
85
+
86
+ it "User has no roles in OSM" do
87
+ @api.stub(:perform_query).with('api.php?action=getUserRoles'){ raise Osm::Error, 'false' }
88
+ expect{ @api.get_user_roles! }.to raise_error(Osm::NoActiveRoles)
89
+ @api.get_user_roles.should == []
90
+ end
91
+
92
+ it "Reraises any other Osm::Error" do
93
+ @api.stub(:perform_query).with('api.php?action=getUserRoles'){ raise Osm::Error, 'Test' }
94
+ expect{ @api.get_user_roles }.to raise_error(Osm::Error, 'Test')
95
+ end
96
+
97
+ end
98
+
99
+
75
100
  describe "User Permissions" do
76
101
 
77
102
  it "Get from API" do
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Osm
2
- VERSION = "1.2.22"
2
+ VERSION = "1.2.23"
3
3
  end
metadata CHANGED
@@ -1,230 +1,205 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.22
5
- prerelease:
4
+ version: 1.2.23
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robert Gauld
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2016-03-19 00:00:00.000000000 Z
11
+ date: 2016-04-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.2'
22
- - - <
20
+ - - "<"
23
21
  - !ruby/object:Gem::Version
24
22
  version: '5'
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>='
27
+ - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: '3.2'
33
- - - <
30
+ - - "<"
34
31
  - !ruby/object:Gem::Version
35
32
  version: '5'
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: httparty
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
- - - ~>
37
+ - - "~>"
42
38
  - !ruby/object:Gem::Version
43
39
  version: '0.9'
44
40
  type: :runtime
45
41
  prerelease: false
46
42
  version_requirements: !ruby/object:Gem::Requirement
47
- none: false
48
43
  requirements:
49
- - - ~>
44
+ - - "~>"
50
45
  - !ruby/object:Gem::Version
51
46
  version: '0.9'
52
47
  - !ruby/object:Gem::Dependency
53
48
  name: active_attr
54
49
  requirement: !ruby/object:Gem::Requirement
55
- none: false
56
50
  requirements:
57
- - - ~>
51
+ - - "~>"
58
52
  - !ruby/object:Gem::Version
59
53
  version: '0.8'
60
54
  type: :runtime
61
55
  prerelease: false
62
56
  version_requirements: !ruby/object:Gem::Requirement
63
- none: false
64
57
  requirements:
65
- - - ~>
58
+ - - "~>"
66
59
  - !ruby/object:Gem::Version
67
60
  version: '0.8'
68
61
  - !ruby/object:Gem::Dependency
69
62
  name: activemodel
70
63
  requirement: !ruby/object:Gem::Requirement
71
- none: false
72
64
  requirements:
73
- - - ! '>='
65
+ - - ">="
74
66
  - !ruby/object:Gem::Version
75
67
  version: '3.2'
76
- - - <
68
+ - - "<"
77
69
  - !ruby/object:Gem::Version
78
70
  version: '5'
79
71
  type: :runtime
80
72
  prerelease: false
81
73
  version_requirements: !ruby/object:Gem::Requirement
82
- none: false
83
74
  requirements:
84
- - - ! '>='
75
+ - - ">="
85
76
  - !ruby/object:Gem::Version
86
77
  version: '3.2'
87
- - - <
78
+ - - "<"
88
79
  - !ruby/object:Gem::Version
89
80
  version: '5'
90
81
  - !ruby/object:Gem::Dependency
91
82
  name: dirty_hashy
92
83
  requirement: !ruby/object:Gem::Requirement
93
- none: false
94
84
  requirements:
95
- - - ~>
85
+ - - "~>"
96
86
  - !ruby/object:Gem::Version
97
87
  version: 0.2.1
98
88
  type: :runtime
99
89
  prerelease: false
100
90
  version_requirements: !ruby/object:Gem::Requirement
101
- none: false
102
91
  requirements:
103
- - - ~>
92
+ - - "~>"
104
93
  - !ruby/object:Gem::Version
105
94
  version: 0.2.1
106
95
  - !ruby/object:Gem::Dependency
107
96
  name: rake
108
97
  requirement: !ruby/object:Gem::Requirement
109
- none: false
110
98
  requirements:
111
- - - ~>
99
+ - - "~>"
112
100
  - !ruby/object:Gem::Version
113
101
  version: '10.0'
114
102
  type: :development
115
103
  prerelease: false
116
104
  version_requirements: !ruby/object:Gem::Requirement
117
- none: false
118
105
  requirements:
119
- - - ~>
106
+ - - "~>"
120
107
  - !ruby/object:Gem::Version
121
108
  version: '10.0'
122
109
  - !ruby/object:Gem::Dependency
123
110
  name: rspec
124
111
  requirement: !ruby/object:Gem::Requirement
125
- none: false
126
112
  requirements:
127
- - - ! '>='
113
+ - - ">="
128
114
  - !ruby/object:Gem::Version
129
115
  version: 2.14.1
130
- - - <
116
+ - - "<"
131
117
  - !ruby/object:Gem::Version
132
118
  version: '4'
133
119
  type: :development
134
120
  prerelease: false
135
121
  version_requirements: !ruby/object:Gem::Requirement
136
- none: false
137
122
  requirements:
138
- - - ! '>='
123
+ - - ">="
139
124
  - !ruby/object:Gem::Version
140
125
  version: 2.14.1
141
- - - <
126
+ - - "<"
142
127
  - !ruby/object:Gem::Version
143
128
  version: '4'
144
129
  - !ruby/object:Gem::Dependency
145
130
  name: fakeweb
146
131
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
132
  requirements:
149
- - - ~>
133
+ - - "~>"
150
134
  - !ruby/object:Gem::Version
151
135
  version: '1.3'
152
136
  type: :development
153
137
  prerelease: false
154
138
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
139
  requirements:
157
- - - ~>
140
+ - - "~>"
158
141
  - !ruby/object:Gem::Version
159
142
  version: '1.3'
160
143
  - !ruby/object:Gem::Dependency
161
144
  name: guard-rspec
162
145
  requirement: !ruby/object:Gem::Requirement
163
- none: false
164
146
  requirements:
165
- - - ~>
147
+ - - "~>"
166
148
  - !ruby/object:Gem::Version
167
149
  version: '4.2'
168
- - - ! '>='
150
+ - - ">="
169
151
  - !ruby/object:Gem::Version
170
152
  version: 4.2.5
171
153
  type: :development
172
154
  prerelease: false
173
155
  version_requirements: !ruby/object:Gem::Requirement
174
- none: false
175
156
  requirements:
176
- - - ~>
157
+ - - "~>"
177
158
  - !ruby/object:Gem::Version
178
159
  version: '4.2'
179
- - - ! '>='
160
+ - - ">="
180
161
  - !ruby/object:Gem::Version
181
162
  version: 4.2.5
182
163
  - !ruby/object:Gem::Dependency
183
164
  name: rb-inotify
184
165
  requirement: !ruby/object:Gem::Requirement
185
- none: false
186
166
  requirements:
187
- - - ~>
167
+ - - "~>"
188
168
  - !ruby/object:Gem::Version
189
169
  version: '0.9'
190
170
  type: :development
191
171
  prerelease: false
192
172
  version_requirements: !ruby/object:Gem::Requirement
193
- none: false
194
173
  requirements:
195
- - - ~>
174
+ - - "~>"
196
175
  - !ruby/object:Gem::Version
197
176
  version: '0.9'
198
177
  - !ruby/object:Gem::Dependency
199
178
  name: coveralls
200
179
  requirement: !ruby/object:Gem::Requirement
201
- none: false
202
180
  requirements:
203
- - - ~>
181
+ - - "~>"
204
182
  - !ruby/object:Gem::Version
205
183
  version: '0.7'
206
184
  type: :development
207
185
  prerelease: false
208
186
  version_requirements: !ruby/object:Gem::Requirement
209
- none: false
210
187
  requirements:
211
- - - ~>
188
+ - - "~>"
212
189
  - !ruby/object:Gem::Version
213
190
  version: '0.7'
214
191
  - !ruby/object:Gem::Dependency
215
192
  name: simplecov
216
193
  requirement: !ruby/object:Gem::Requirement
217
- none: false
218
194
  requirements:
219
- - - ~>
195
+ - - "~>"
220
196
  - !ruby/object:Gem::Version
221
197
  version: '0.7'
222
198
  type: :development
223
199
  prerelease: false
224
200
  version_requirements: !ruby/object:Gem::Requirement
225
- none: false
226
201
  requirements:
227
- - - ~>
202
+ - - "~>"
228
203
  - !ruby/object:Gem::Version
229
204
  version: '0.7'
230
205
  description: Use the Online Scout Manager API (https://www.onlinescoutmanager.co.uk)
@@ -235,9 +210,9 @@ executables: []
235
210
  extensions: []
236
211
  extra_rdoc_files: []
237
212
  files:
238
- - .gitignore
239
- - .rspec
240
- - .travis.yml
213
+ - ".gitignore"
214
+ - ".rspec"
215
+ - ".travis.yml"
241
216
  - CHANGELOG.md
242
217
  - Gemfile
243
218
  - Guardfile
@@ -295,26 +270,25 @@ files:
295
270
  homepage: https://github.com/robertgauld/osm
296
271
  licenses:
297
272
  - BSD 3 clause
273
+ metadata: {}
298
274
  post_install_message:
299
275
  rdoc_options: []
300
276
  require_paths:
301
277
  - lib
302
278
  required_ruby_version: !ruby/object:Gem::Requirement
303
- none: false
304
279
  requirements:
305
- - - ! '>='
280
+ - - ">="
306
281
  - !ruby/object:Gem::Version
307
282
  version: '0'
308
283
  required_rubygems_version: !ruby/object:Gem::Requirement
309
- none: false
310
284
  requirements:
311
- - - ! '>='
285
+ - - ">="
312
286
  - !ruby/object:Gem::Version
313
287
  version: '0'
314
288
  requirements: []
315
289
  rubyforge_project: osm
316
- rubygems_version: 1.8.23.2
290
+ rubygems_version: 2.5.1
317
291
  signing_key:
318
- specification_version: 3
292
+ specification_version: 4
319
293
  summary: Use the Online Scout Manager API
320
294
  test_files: []