simperium 0.0.1 → 0.0.2

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.
Files changed (3) hide show
  1. data/lib/simperium/version.rb +1 -1
  2. data/lib/simperium.rb +346 -344
  3. metadata +4 -4
@@ -1,3 +1,3 @@
1
1
  module Simperium
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/simperium.rb CHANGED
@@ -9,417 +9,419 @@ require File.join(File.dirname(__FILE__), 'simperium/error_handling')
9
9
  #state file is not shared between processes on Heroku
10
10
  UUID.state_file = false
11
11
 
12
- class Auth
13
- def initialize(appname, api_key, host=nil,scheme='https')
14
- if host == nil
15
- host = ENV['SIMPERIUM_AUTHHOST'] || 'auth.simperium.com'
12
+ module Simperium
13
+ class Auth
14
+ def initialize(appname, api_key, host=nil,scheme='https')
15
+ if host == nil
16
+ host = ENV['SIMPERIUM_AUTHHOST'] || 'auth.simperium.com'
17
+ end
18
+
19
+ @appname = appname
20
+ @api_key = api_key
21
+ @host = host
22
+ @scheme = scheme
16
23
  end
17
-
18
- @appname = appname
19
- @api_key = api_key
20
- @host = host
21
- @scheme = scheme
22
- end
23
-
24
- def _auth_header
25
- return {"X-Simperium-API-Key" => "#{@api_key}"}
26
- end
27
24
 
28
- def _request(url, data=nil, headers=nil, method=nil)
29
- url = "#{@scheme}://#{@host}/1/#{url}"
30
- opts = {:url => url,
31
- :method => :post,
32
- :open_timeout => 30,
33
- :timeout => 80}
34
-
35
- if data
36
- opts = opts.merge({:payload => data})
37
- end
38
-
39
- if headers.nil?
40
- headers = {}
41
- end
42
- opts = opts.merge({:headers => headers})
43
-
44
- if method
45
- opts = opts.merge({:method => method})
25
+ def _auth_header
26
+ return {"X-Simperium-API-Key" => "#{@api_key}"}
46
27
  end
47
-
48
- begin
49
- response = RestClient::Request.execute(opts)
50
- rescue SocketError => e
51
- ErrorHandling.handle_restclient_error(e)
52
- rescue NoMethodError => e
53
- if e.message =~ /\WRequestFailed\W/
54
- e = StandardError.new('Unexpected HTTP response code')
55
- ErrorHandling.handle_restclient_error(e)
56
- else
57
- raise
28
+
29
+ def _request(url, data=nil, headers=nil, method=nil)
30
+ url = "#{@scheme}://#{@host}/1/#{url}"
31
+ opts = {:url => url,
32
+ :method => :post,
33
+ :open_timeout => 30,
34
+ :timeout => 80}
35
+
36
+ if data
37
+ opts = opts.merge({:payload => data})
58
38
  end
59
- rescue RestClient::ExceptionWithResponse => e
60
- if rcode = e.http_code and rbody = e.http_body
61
- ErrorHandling.handle_api_error(rcode, rbody)
62
- else
39
+
40
+ if headers.nil?
41
+ headers = {}
42
+ end
43
+ opts = opts.merge({:headers => headers})
44
+
45
+ if method
46
+ opts = opts.merge({:method => method})
47
+ end
48
+
49
+ begin
50
+ response = RestClient::Request.execute(opts)
51
+ rescue SocketError => e
52
+ ErrorHandling.handle_restclient_error(e)
53
+ rescue NoMethodError => e
54
+ if e.message =~ /\WRequestFailed\W/
55
+ e = StandardError.new('Unexpected HTTP response code')
56
+ ErrorHandling.handle_restclient_error(e)
57
+ else
58
+ raise
59
+ end
60
+ rescue RestClient::ExceptionWithResponse => e
61
+ if rcode = e.http_code and rbody = e.http_body
62
+ ErrorHandling.handle_api_error(rcode, rbody)
63
+ else
64
+ ErrorHandling.handle_restclient_error(e)
65
+ end
66
+ rescue RestClient::Exception, Errno::ECONNREFUSED => e
63
67
  ErrorHandling.handle_restclient_error(e)
64
68
  end
65
- rescue RestClient::Exception, Errno::ECONNREFUSED => e
66
- ErrorHandling.handle_restclient_error(e)
67
- end
68
-
69
- return response
70
- end
71
-
72
- def create(username, password)
73
- data = {
74
- 'client_id' => @api_key,
75
- 'username' => username,
76
- 'password'=> password }
77
-
78
- response = self._request(@appname+'/create/', data)
79
- return JSON.load(response.body)['access_token']
80
- end
81
69
 
82
- def authorize(username, password)
83
- data = {
84
- 'username' => username,
85
- 'password' => password }
86
- response = self._request(@appname+'/authorize/', data, headers=_auth_header())
87
- return JSON.load(response.body)['access_token']
88
- end
89
- end
90
-
91
- class Bucket
92
- def initialize(appname, auth_token, bucket, options={})
93
- defaults = { :userid => nil, :host => nil, :scheme => 'https', :clientid => nil }
94
- unless options.empty?
95
- options = defaults.merge(options)
96
- else
97
- options = defaults
70
+ return response
98
71
  end
99
72
 
100
- if options[:host] == nil
101
- options[:host] = ENV['SIMPERIUM_APIHOST'] || 'api.simperium.com'
73
+ def create(username, password)
74
+ data = {
75
+ 'client_id' => @api_key,
76
+ 'username' => username,
77
+ 'password'=> password }
78
+
79
+ response = self._request(@appname+'/create/', data)
80
+ return JSON.load(response.body)['access_token']
102
81
  end
103
-
104
- @userid = options[:userid]
105
- @host = options[:host]
106
- @scheme = options[:scheme]
107
- @appname = appname
108
- @bucket = bucket
109
- @auth_token = auth_token
110
-
111
- if options[:clientid] == nil
112
- uuid = UUID.new
113
- random_string = uuid.generate(:compact)
114
- @clientid = "rb-#{random_string}"
115
- else
116
- @clientid = options[:clientid]
82
+
83
+ def authorize(username, password)
84
+ data = {
85
+ 'username' => username,
86
+ 'password' => password }
87
+ response = self._request(@appname+'/authorize/', data, headers=_auth_header())
88
+ return JSON.load(response.body)['access_token']
117
89
  end
118
90
  end
119
91
 
120
- def _auth_header
121
- headers = {"X-Simperium-Token" => "#{@auth_token}"}
122
- unless @userid.nil?
123
- headers["X-Simperium-User"] = @userid
124
- end
125
- return headers
126
- end
92
+ class Bucket
93
+ def initialize(appname, auth_token, bucket, options={})
94
+ defaults = { :userid => nil, :host => nil, :scheme => 'https', :clientid => nil }
95
+ unless options.empty?
96
+ options = defaults.merge(options)
97
+ else
98
+ options = defaults
99
+ end
127
100
 
128
- def _gen_ccid
129
- ccid = UUID.new
130
- return ccid.generate(:compact)
131
- end
101
+ if options[:host] == nil
102
+ options[:host] = ENV['SIMPERIUM_APIHOST'] || 'api.simperium.com'
103
+ end
132
104
 
133
- def _request(url, data=nil, headers=nil, method=nil, timeout=nil)
134
- url = "#{@scheme}://#{@host}/1/#{url}"
135
- opts = {:url => url,
136
- :method => :post,
137
- :open_timeout => 30,
138
- :timeout => 80}
139
-
140
- if data
141
- opts = opts.merge({:payload => data})
142
- end
143
-
144
- if headers.nil?
145
- headers = {}
105
+ @userid = options[:userid]
106
+ @host = options[:host]
107
+ @scheme = options[:scheme]
108
+ @appname = appname
109
+ @bucket = bucket
110
+ @auth_token = auth_token
111
+
112
+ if options[:clientid] == nil
113
+ uuid = UUID.new
114
+ random_string = uuid.generate(:compact)
115
+ @clientid = "rb-#{random_string}"
116
+ else
117
+ @clientid = options[:clientid]
118
+ end
146
119
  end
147
- opts = opts.merge({:headers => headers})
148
-
149
- if method
150
- opts = opts.merge({:method => method})
120
+
121
+ def _auth_header
122
+ headers = {"X-Simperium-Token" => "#{@auth_token}"}
123
+ unless @userid.nil?
124
+ headers["X-Simperium-User"] = @userid
125
+ end
126
+ return headers
151
127
  end
152
-
153
- if timeout
154
- opts = opts.merge({:timeout => timeout})
128
+
129
+ def _gen_ccid
130
+ ccid = UUID.new
131
+ return ccid.generate(:compact)
155
132
  end
156
-
157
- puts opts
158
- begin
159
- response = RestClient::Request.execute(opts)
160
- rescue SocketError => e
161
- ErrorHandling.handle_restclient_error(e)
162
- rescue NoMethodError => e
163
- if e.message =~ /\WRequestFailed\W/
164
- e = StandardError.new('Unexpected HTTP response code')
165
- ErrorHandling.handle_restclient_error(e)
166
- else
167
- raise
133
+
134
+ def _request(url, data=nil, headers=nil, method=nil, timeout=nil)
135
+ url = "#{@scheme}://#{@host}/1/#{url}"
136
+ opts = {:url => url,
137
+ :method => :post,
138
+ :open_timeout => 30,
139
+ :timeout => 80}
140
+
141
+ if data
142
+ opts = opts.merge({:payload => data})
168
143
  end
169
- rescue RestClient::ExceptionWithResponse => e
170
- if rcode = e.http_code and rbody = e.http_body
171
- ErrorHandling.handle_api_error(rcode, rbody)
172
- else
144
+
145
+ if headers.nil?
146
+ headers = {}
147
+ end
148
+ opts = opts.merge({:headers => headers})
149
+
150
+ if method
151
+ opts = opts.merge({:method => method})
152
+ end
153
+
154
+ if timeout
155
+ opts = opts.merge({:timeout => timeout})
156
+ end
157
+
158
+ puts opts
159
+ begin
160
+ response = RestClient::Request.execute(opts)
161
+ rescue SocketError => e
162
+ ErrorHandling.handle_restclient_error(e)
163
+ rescue NoMethodError => e
164
+ if e.message =~ /\WRequestFailed\W/
165
+ e = StandardError.new('Unexpected HTTP response code')
166
+ ErrorHandling.handle_restclient_error(e)
167
+ else
168
+ raise
169
+ end
170
+ rescue RestClient::ExceptionWithResponse => e
171
+ if rcode = e.http_code and rbody = e.http_body
172
+ ErrorHandling.handle_api_error(rcode, rbody)
173
+ else
174
+ ErrorHandling.handle_restclient_error(e)
175
+ end
176
+ rescue RestClient::Exception, Errno::ECONNREFUSED => e
173
177
  ErrorHandling.handle_restclient_error(e)
174
178
  end
175
- rescue RestClient::Exception, Errno::ECONNREFUSED => e
176
- ErrorHandling.handle_restclient_error(e)
177
- end
178
179
 
179
- return response
180
- end
181
-
182
- def index(options={})
183
- defaults = {:data=>nil, :mark=>nil, :limit=>nil, :since=>nil}
184
- unless options.empty?
185
- options = defaults.merge(options)
186
- else
187
- options = defaults
180
+ return response
188
181
  end
182
+
183
+ def index(options={})
184
+ defaults = {:data=>nil, :mark=>nil, :limit=>nil, :since=>nil}
185
+ unless options.empty?
186
+ options = defaults.merge(options)
187
+ else
188
+ options = defaults
189
+ end
189
190
 
190
- data = options[:data]
191
- mark = options[:mark]
192
- limit = options[:limit]
193
- since = options[:since]
191
+ data = options[:data]
192
+ mark = options[:mark]
193
+ limit = options[:limit]
194
+ since = options[:since]
194
195
 
195
- url = "#{@appname}/#{@bucket}/index?"
196
-
197
- if data
198
- url += "&data=1"
199
- end
196
+ url = "#{@appname}/#{@bucket}/index?"
197
+
198
+ if data
199
+ url += "&data=1"
200
+ end
200
201
 
201
- if mark
202
- url += "&mark=#{mark.to_str}"
203
- end
202
+ if mark
203
+ url += "&mark=#{mark.to_str}"
204
+ end
204
205
 
205
- if limit
206
- url += "&limit=#{limit.to_s}"
206
+ if limit
207
+ url += "&limit=#{limit.to_s}"
208
+ end
209
+
210
+ if since
211
+ url += "&since=#{since.to_str}"
212
+ end
213
+
214
+ response = self._request(url, data=nil, headers=_auth_header(), method='GET')
215
+ return JSON.load(response.body)
207
216
  end
208
217
 
209
- if since
210
- url += "&since=#{since.to_str}"
218
+ def get(item, options={})
219
+ defaults = {:default=>nil, :version=>nil}
220
+ unless options.empty?
221
+ options = defaults.merge(options)
222
+ else
223
+ options = defaults
224
+ end
225
+ default = options[:default]
226
+ version = options[:version]
227
+
228
+ url = "#{@appname}/#{@bucket}/i/#{item}"
229
+ unless version.nil?
230
+ url += "/v/#{version}"
231
+ end
232
+
233
+ response = self._request(url, data=nil, headers=_auth_header(), method='GET')
234
+ return JSON.load(response.body)
211
235
  end
212
236
 
213
- response = self._request(url, data=nil, headers=_auth_header(), method='GET')
214
- return JSON.load(response.body)
215
- end
237
+ def post(item, data, options={})
238
+ defaults = {:version=>nil, :ccid=>nil, :include_response=>false, :replace=>false}
239
+ unless options.empty?
240
+ options = defaults.merge(options)
241
+ else
242
+ options = defaults
243
+ end
216
244
 
217
- def get(item, options={})
218
- defaults = {:default=>nil, :version=>nil}
219
- unless options.empty?
220
- options = defaults.merge(options)
221
- else
222
- options = defaults
223
- end
224
- default = options[:default]
225
- version = options[:version]
245
+ version = options[:version]
246
+ ccid = options[:ccid]
247
+ include_response = options[:include_response]
248
+ replace = options[:replace]
226
249
 
227
- url = "#{@appname}/#{@bucket}/i/#{item}"
228
- unless version.nil?
229
- url += "/v/#{version}"
250
+ if ccid.nil?
251
+ ccid = self._gen_ccid()
252
+ end
253
+ url = "#{@appname}/#{@bucket}/i/#{item}"
254
+
255
+ if version
256
+ url += "/v/#{version}"
257
+ end
258
+ url += "?clientid=#{@clientid}&ccid=#{ccid}"
259
+
260
+ if include_response
261
+ url += "&response=1"
262
+ end
263
+
264
+ if replace
265
+ url += "&replace=1"
266
+ end
267
+ data = JSON.dump(data)
268
+
269
+ response = self._request(url, data, headers=_auth_header())
270
+ if include_response
271
+ return item, JSON.load(response.body)
272
+ else
273
+ return item
274
+ end
230
275
  end
231
276
 
232
- response = self._request(url, data=nil, headers=_auth_header(), method='GET')
233
- return JSON.load(response.body)
234
- end
235
-
236
- def post(item, data, options={})
237
- defaults = {:version=>nil, :ccid=>nil, :include_response=>false, :replace=>false}
238
- unless options.empty?
239
- options = defaults.merge(options)
240
- else
241
- options = defaults
277
+ def new(data, ccid=nil)
278
+ uuid = UUID.new
279
+ return self.post(uuid.generate(:compact), data, ccid=ccid)
242
280
  end
243
281
 
244
- version = options[:version]
245
- ccid = options[:ccid]
246
- include_response = options[:include_response]
247
- replace = options[:replace]
282
+ def set(item, data, options={})
283
+ return self.post(item, data, options)
284
+ end
248
285
 
249
- if ccid.nil?
286
+ def delete(item, version=nil)
250
287
  ccid = self._gen_ccid()
288
+ url = "#{@appname}/#{@bucket}/i/{item}"
289
+
290
+ if version
291
+ url += "/v/#{version}"
292
+ end
293
+
294
+ url += "?clientid=#{@clientid}&ccid=#{ccid}"
295
+ response = self._request(url, data=nil, headers=_auth_header(), method='DELETE')
296
+ if response.body.strip.nil?
297
+ return ccid
298
+ end
251
299
  end
252
- url = "#{@appname}/#{@bucket}/i/#{item}"
253
-
254
- if version
255
- url += "/v/#{version}"
256
- end
257
- url += "?clientid=#{@clientid}&ccid=#{ccid}"
258
-
259
- if include_response
260
- url += "&response=1"
261
- end
262
-
263
- if replace
264
- url += "&replace=1"
265
- end
266
- data = JSON.dump(data)
267
-
268
- response = self._request(url, data, headers=_auth_header())
269
- if include_response
270
- return item, JSON.load(response.body)
271
- else
272
- return item
273
- end
274
- end
275
300
 
276
- def new(data, ccid=nil)
277
- uuid = UUID.new
278
- return self.post(uuid.generate(:compact), data, ccid=ccid)
279
- end
301
+ def changes(options={})
302
+ defautls = {:cv=>nil, :timeout=>nil}
303
+ unless options.empty?
304
+ options = defaults.merge(options)
305
+ else
306
+ options = defaults
307
+ end
280
308
 
281
- def set(item, data, options={})
282
- return self.post(item, data, options)
283
- end
309
+ cv = option[:cv]
310
+ timeout = option[:timeout]
284
311
 
285
- def delete(item, version=nil)
286
- ccid = self._gen_ccid()
287
- url = "#{@appname}/#{@bucket}/i/{item}"
288
-
289
- if version
290
- url += "/v/#{version}"
312
+ url = "#{@appname}/#{@bucket}/changes?clientid=#{@clientid}"
313
+ unless cv.nil?
314
+ url += "&cv=#{cv}"
315
+ end
316
+ headers = _auth_header()
317
+
318
+ response = self._request(url, data=nil, headers=headers, method='GET', timeout=timeout)
319
+ return JSON.load(response.body)
291
320
  end
292
321
 
293
- url += "?clientid=#{@clientid}&ccid=#{ccid}"
294
- response = self._request(url, data=nil, headers=_auth_header(), method='DELETE')
295
- if response.body.strip.nil?
296
- return ccid
297
- end
298
- end
322
+ def all(options={})
323
+ defaults = {:cv=>nil, :data=>nil, :username=>false, :most_recent=>false, :timeout=>nil}
324
+ unless options.empty?
325
+ options = defaults.merge(options)
326
+ else
327
+ options = defaults
328
+ end
299
329
 
300
- def changes(options={})
301
- defautls = {:cv=>nil, :timeout=>nil}
302
- unless options.empty?
303
- options = defaults.merge(options)
304
- else
305
- options = defaults
306
- end
330
+ cv = options[:cv]
331
+ data = options[:data]
332
+ username = options[:username]
333
+ most_recent = options[:most_recent]
334
+ timeout = options[:timeout]
307
335
 
308
- cv = option[:cv]
309
- timeout = option[:timeout]
336
+ url = "#{@appname}/#{@bucket}/all?clientid=#{@clientid}"
337
+ unless cv.nil?
338
+ url += "&cv=#{cv}"
339
+ end
310
340
 
311
- url = "#{@appname}/#{@bucket}/changes?clientid=#{@clientid}"
312
- unless cv.nil?
313
- url += "&cv=#{cv}"
341
+ if username
342
+ url += "&username=1"
343
+ end
344
+
345
+ if data
346
+ url += "&data=1"
347
+ end
348
+
349
+ if most_recent
350
+ url += "&most_recent=1"
351
+ end
352
+
353
+ headers = _auth_header()
354
+
355
+ response = self._request(url, data=nil, headers=headers, method='GET', timeout=timeout)
356
+ return JSON.load(response.body)
314
357
  end
315
- headers = _auth_header()
316
-
317
- response = self._request(url, data=nil, headers=headers, method='GET', timeout=timeout)
318
- return JSON.load(response.body)
319
358
  end
320
359
 
321
- def all(options={})
322
- defaults = {:cv=>nil, :data=>nil, :username=>false, :most_recent=>false, :timeout=>nil}
323
- unless options.empty?
324
- options = defaults.merge(options)
325
- else
326
- options = defaults
327
- end
360
+ class User
361
+ def initialize(appname, auth_token, options={})
362
+ defaults = {:host=>nil, :scheme=>'https', :clientid=>nil}
363
+ unless options.empty?
364
+ options = defaults.merge(options)
365
+ else
366
+ options = defaults
367
+ end
328
368
 
329
- cv = options[:cv]
330
- data = options[:data]
331
- username = options[:username]
332
- most_recent = options[:most_recent]
333
- timeout = options[:timeout]
369
+ @bucket = Bucket.new(appname, auth_token, 'user',
370
+ options=options)
334
371
 
335
- url = "#{@appname}/#{@bucket}/all?clientid=#{@clientid}"
336
- unless cv.nil?
337
- url += "&cv=#{cv}"
372
+ url = "#{appname}/user"
373
+ response = @bucket._request(url, data=nil, headers=@bucket._auth_header(), method='GET')
374
+ response = JSON.load(response.body)
375
+ @userid = response['userid']
338
376
  end
339
377
 
340
- if username
341
- url += "&username=1"
378
+ def get
379
+ return @bucket.get(@userid)
342
380
  end
343
381
 
344
- if data
345
- url += "&data=1"
346
- end
347
-
348
- if most_recent
349
- url += "&most_recent=1"
350
- end
351
-
352
- headers = _auth_header()
353
-
354
- response = self._request(url, data=nil, headers=headers, method='GET', timeout=timeout)
355
- return JSON.load(response.body)
356
- end
357
- end
358
-
359
- class User
360
- def initialize(appname, auth_token, options={})
361
- defaults = {:host=>nil, :scheme=>'https', :clientid=>nil}
362
- unless options.empty?
363
- options = defaults.merge(options)
364
- else
365
- options = defaults
382
+ def post(data)
383
+ @bucket.post(@userid, data)
366
384
  end
367
-
368
- @bucket = Bucket.new(appname, auth_token, 'user',
369
- options=options)
370
-
371
- url = "#{appname}/user"
372
- response = @bucket._request(url, data=nil, headers=@bucket._auth_header(), method='GET')
373
- response = JSON.load(response.body)
374
- @userid = response['userid']
375
385
  end
376
386
 
377
- def get
378
- return @bucket.get(@userid)
379
- end
387
+ class Api
388
+ def initialize(appname, auth_token, options={})
389
+ @appname = appname
390
+ @token = auth_token
391
+ @_options = options
380
392
 
381
- def post(data)
382
- @bucket.post(@userid, data)
383
- end
384
- end
385
-
386
- class Api
387
- def initialize(appname, auth_token, options={})
388
- @appname = appname
389
- @token = auth_token
390
- @_options = options
393
+ @getitem = {}
394
+ end
391
395
 
392
- @getitem = {}
393
- end
396
+ def method_missing(method_sym, *arguments, &block)
397
+ #the first argument is a Symbol, so you need to_s it you want to pattern match
398
+ unless method_sym.to_s =~ /=$/
399
+ if method_sym.to_s == 'user'
400
+ @getitem[method_sym] ||= User.new(@appname, @token)
401
+ else
402
+ @getitem[method_sym] ||= Bucket.new(@appname, @token, method_sym)
403
+ end
404
+ end
405
+ end
394
406
 
395
- def method_missing(method_sym, *arguments, &block)
396
- #the first argument is a Symbol, so you need to_s it you want to pattern match
397
- unless method_sym.to_s =~ /=$/
398
- if method_sym.to_s == 'user'
399
- @getitem[method_sym] ||= User.new(@appname, @token)
407
+ def respond_to?(method_sym, include_private = false)
408
+ if method_sym.to_s =~ /^(.*)$/
409
+ true
400
410
  else
401
- @getitem[method_sym] ||= Bucket.new(@appname, @token, method_sym)
411
+ super
402
412
  end
403
- end
413
+ end
404
414
  end
405
415
 
406
- def respond_to?(method_sym, include_private = false)
407
- if method_sym.to_s =~ /^(.*)$/
408
- true
409
- else
410
- super
416
+ class Admin < Api
417
+ def initialize(appname, admin_token, options={})
418
+ @appname = appname
419
+ @token = admin_token
420
+ @_options = options
411
421
  end
412
- end
413
- end
414
-
415
- class Admin < Api
416
- def initialize(appname, admin_token, options={})
417
- @appname = appname
418
- @token = admin_token
419
- @_options = options
420
- end
421
422
 
422
- def as_user(userid)
423
- return Api.new(@appname, @token, userid=userid, @_options)
423
+ def as_user(userid)
424
+ return Api.new(@appname, @token, userid=userid, @_options)
425
+ end
424
426
  end
425
- end
427
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simperium
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ray Ventura
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-06-19 00:00:00 Z
18
+ date: 2012-06-21 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rest-client