ocean-rails 3.8.9 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25d86f8d69015565033c12e60edb7017186d6829
4
- data.tar.gz: 83a3f9b85153a9708225aa5ab46ad58e5b7837fa
3
+ metadata.gz: c03d917f00041083de25676b0e29d98840a38e88
4
+ data.tar.gz: 364ddfa8ad3ef5f0bf3c371cc92569b1bd982dab
5
5
  SHA512:
6
- metadata.gz: e7540bf449eb3e0d3aa5755f2fa75fd9ed22b8e74f6fd7409908a4836bd6f3e858e4f82cadbeb50a6236fe50d17d39cc891b9a87068347d14201e7ba8b084a1e
7
- data.tar.gz: 00618f27d71e1446ac3f1135757c8944a0b8dd69873d5978166f6d058b6694e47173892ccbbf22bd4104511dc1afc4b41d5a8542e9d3acff1cf783c732b24448
6
+ metadata.gz: 98554e6882e089e75b0751bdd879c7e3d9c4dde7ff90a1f2d778c17b552fc3ae71d99e4b5003bf8d02df144052bfa8ac016ed892037e63ac4348a9e2a03a65b4
7
+ data.tar.gz: edbe8eee4187fc1fe0a284f69e6bffb33ec825c1d203f275d66c41a65fd04a886c6d19ac788643088e9ec88c9be324b3e42375ff63519fe713a7fca01b94139f
@@ -130,7 +130,7 @@ class Api
130
130
  #
131
131
  class RemoteResource
132
132
 
133
- attr_reader :uri, :content_type, :retries, :backoff_time, :backoff_rate, :backoff_max
133
+ attr_reader :uri, :args, :content_type, :retries, :backoff_time, :backoff_rate, :backoff_max
134
134
  attr_reader :raw, :resource, :resource_type, :status, :headers, :credentials, :x_api_token
135
135
  attr_reader :status_message, :response, :etag
136
136
 
@@ -140,11 +140,12 @@ class Api
140
140
  # the default values, they will be used instead. Specifying only one of them is not
141
141
  # permitted.
142
142
  #
143
- def initialize(uri, type="application/json",
143
+ def initialize(uri, type="application/json", args: nil,
144
144
  credentials: nil, x_api_token: nil,
145
145
  retries: 3, backoff_time: 1, backoff_rate: 0.9, backoff_max: 30)
146
146
  super()
147
147
  @uri = uri
148
+ @args = args
148
149
  @content_type = type
149
150
  @retries = retries
150
151
  @backoff_time = backoff_time
@@ -253,7 +254,7 @@ class Api
253
254
  # otherwise returns the resource itself. The args are passed directly to +new+.
254
255
  #
255
256
  def self.get!(*args)
256
- _retrieve new(*args)
257
+ new(*args).send :_retrieve
257
258
  end
258
259
 
259
260
  #
@@ -272,14 +273,15 @@ class Api
272
273
  # if they occur, otherwise will return the resource itself.
273
274
  #
274
275
  def get!(hlink=nil, args: nil)
275
- RemoteResource._retrieve self unless present?
276
+ _retrieve unless present?
276
277
  hlink = hlink.to_s if hlink
277
- if !hlink || hlink == 'self'
278
+ if !args && (!hlink || hlink == 'self')
278
279
  self
279
280
  else
280
281
  hl_data = hyperlink[hlink]
281
282
  raise HyperlinkMissing, "#{resource_type} has no #{hlink} hyperlink" unless hl_data
282
- RemoteResource.get!(hl_data['href'])
283
+ RemoteResource.get!(hl_data['href'], args: args, retries: retries, backoff_time: backoff_time,
284
+ backoff_rate: backoff_rate, backoff_max: backoff_max)
283
285
  end
284
286
  end
285
287
 
@@ -288,15 +290,16 @@ class Api
288
290
  # exceptions if problems occur, but will always return the resource itself.
289
291
  # A missing hyperlink, though, will always raise a HyperlinkMissing exception.
290
292
  #
291
- def get(hlink=nil)
293
+ def get(hlink=nil, args: nil)
292
294
  get! rescue nil
293
295
  hlink = hlink.to_s if hlink
294
- if !hlink || hlink == 'self'
296
+ if !args && (!hlink || hlink == 'self')
295
297
  self
296
298
  else
297
299
  hl_data = hyperlink[hlink]
298
300
  raise HyperlinkMissing, "#{resource_type} has no #{hlink} hyperlink" unless hl_data
299
- RemoteResource.get(hl_data['href'])
301
+ RemoteResource.get(hl_data['href'], args: args, retries: retries, backoff_time: backoff_time,
302
+ backoff_rate: backoff_rate, backoff_max: backoff_max)
300
303
  end
301
304
  end
302
305
 
@@ -308,13 +311,14 @@ class Api
308
311
  def put!(hlink=nil, args: nil, body: {})
309
312
  get!
310
313
  hlink = hlink.to_s if hlink
311
- if !hlink || hlink == 'self'
314
+ if !args && (!hlink || hlink == 'self')
312
315
  _modify(body)
313
316
  self
314
317
  else
315
318
  hl_data = hyperlink[hlink]
316
319
  raise HyperlinkMissing, "#{resource_type} has no #{hlink} hyperlink" unless hl_data
317
- hl_res = RemoteResource.new(hl_data['href'])
320
+ hl_res = RemoteResource.new(hl_data['href'], retries: retries, backoff_time: backoff_time,
321
+ backoff_rate: backoff_rate, backoff_max: backoff_max)
318
322
  hl_res.send :_modify, body, args: args
319
323
  hl_res
320
324
  end
@@ -328,13 +332,14 @@ class Api
328
332
  def put(hlink=nil, args: nil, body: {})
329
333
  get
330
334
  hlink = hlink.to_s if hlink
331
- if !hlink || hlink == 'self'
335
+ if !args && (!hlink || hlink == 'self')
332
336
  _modify(body) rescue nil
333
337
  self
334
338
  else
335
339
  hl_data = hyperlink[hlink]
336
340
  raise HyperlinkMissing, "#{resource_type} has no #{hlink} hyperlink" unless hl_data
337
- hl_res = RemoteResource.new(hl_data['href'])
341
+ hl_res = RemoteResource.new(hl_data['href'], retries: retries, backoff_time: backoff_time,
342
+ backoff_rate: backoff_rate, backoff_max: backoff_max)
338
343
  hl_res.send :_modify, body, args: args
339
344
  hl_res
340
345
  end
@@ -347,7 +352,7 @@ class Api
347
352
  #
348
353
  def post!(hlink=nil, args: nil, body: {})
349
354
  get!
350
- hlink = (hlink || 'self').to_s
355
+ hlink = (hlink || !args && 'self').to_s
351
356
  hl_data = hyperlink[hlink]
352
357
  raise HyperlinkMissing, "#{resource_type} has no #{hlink} hyperlink" unless hl_data
353
358
  _create(hl_data['href'], body, args: args)
@@ -360,7 +365,7 @@ class Api
360
365
  #
361
366
  def post(hlink=nil, args: nil, body: {})
362
367
  get
363
- hlink = (hlink || 'self').to_s
368
+ hlink = (hlink || !args && 'self').to_s
364
369
  hl_data = hyperlink[hlink]
365
370
  raise HyperlinkMissing, "#{resource_type} has no #{hlink} hyperlink" unless hl_data
366
371
  _create(hl_data['href'], body, args: args) rescue nil
@@ -433,52 +438,49 @@ class Api
433
438
  attr_writer :etag
434
439
 
435
440
 
436
- def self._credentials(rr)
441
+ def _credentials(rr)
437
442
  if rr.credentials.present? && rr.credentials != Api.credentials(API_USER, API_PASSWORD)
438
- credentials = rr.credentials
439
- token = rr.x_api_token
443
+ [rr.credentials, rr.x_api_token]
440
444
  else
441
- credentials = nil
442
- token = rr.x_api_token || Api.service_token
445
+ [nil, rr.x_api_token || Api.service_token]
443
446
  end
444
- [credentials, token]
445
447
  end
446
448
 
447
449
 
448
- def self._retrieve(rr)
449
- credentials, token = _credentials(rr)
450
- response = Api.request Api.internalize_uri(rr.uri), :get,
450
+ def _retrieve#(args: nil)
451
+ credentials, token = _credentials(self)
452
+ response = Api.request Api.internalize_uri(uri), :get, args: args,
451
453
  headers: {},
452
454
  credentials: credentials, x_api_token: token,
453
- retries: rr.retries, backoff_time: rr.backoff_time, backoff_rate: rr.backoff_rate,
454
- backoff_max: rr.backoff_max
455
- rr.send :response=, response
456
- rr.send :status=, response.status
457
- rr.send :status_message=, response.message
458
- rr.send :headers=, response.headers
455
+ retries: retries, backoff_time: backoff_time, backoff_rate: backoff_rate,
456
+ backoff_max: backoff_max
457
+ self.response = response
458
+ self.status = response.status
459
+ self.status_message = response.message
460
+ self.headers = response.headers
459
461
  raise GetFailed, "#{response.status} #{response.message}" unless response.success?
460
462
  begin
461
463
  raw = response.body
462
464
  rescue JSON::ParserError
463
465
  raise UnparseableJson
464
466
  end
465
- rr.send :_setup, raw, response
466
- rr
467
+ _setup raw, response
468
+ self
467
469
  end
468
470
 
469
471
 
470
472
  def _conditional_get
471
- credentials, token = RemoteResource._credentials(self)
472
- response = Api.request Api.internalize_uri(uri), :get,
473
+ credentials, token = _credentials(self)
474
+ response = Api.request Api.internalize_uri(uri), :get, args: args,
473
475
  headers: {"If-None-Match" => etag},
474
476
  credentials: credentials, x_api_token: token,
475
477
  retries: retries, backoff_time: backoff_time, backoff_rate: backoff_rate,
476
478
  backoff_max: backoff_max
477
- send :response=, response
479
+ self.response = response
478
480
  return if response.status == 304
479
- send :status=, response.status
480
- send :status_message=, response.message
481
- send :headers=, response.headers
481
+ self.status = response.status
482
+ self.status_message = response.message
483
+ self.headers = response.headers
482
484
  raise ConditionalGetFailed, "#{response.status} #{response.message}" unless response.success?
483
485
  begin
484
486
  raw = response.body
@@ -517,7 +519,7 @@ class Api
517
519
 
518
520
 
519
521
  def _modify(body, args: nil)
520
- credentials, token = RemoteResource._credentials(self)
522
+ credentials, token = _credentials(self)
521
523
  response = Api.request Api.internalize_uri(uri), :put, headers: {}, body: body.to_json,
522
524
  credentials: credentials, x_api_token: token,
523
525
  retries: retries, backoff_time: backoff_time, backoff_rate: backoff_rate,
@@ -542,7 +544,7 @@ class Api
542
544
 
543
545
 
544
546
  def _create(post_uri, body, args: nil)
545
- credentials, token = RemoteResource._credentials(self)
547
+ credentials, token = _credentials(self)
546
548
  response = Api.request Api.internalize_uri(post_uri), :post, headers: {}, body: body.to_json,
547
549
  credentials: credentials, x_api_token: token,
548
550
  retries: retries, backoff_time: backoff_time, backoff_rate: backoff_rate,
@@ -558,7 +560,8 @@ class Api
558
560
  raise UnparseableJson
559
561
  end
560
562
  type, resource = verify_resource(response.body)
561
- created = RemoteResource.new(post_uri)
563
+ created = RemoteResource.new(post_uri, retries: retries, backoff_time: backoff_time,
564
+ backoff_rate: backoff_rate, backoff_max: backoff_max)
562
565
  created.send :_setup, raw, response
563
566
  created.send :etag=, nil
564
567
  created
@@ -566,7 +569,7 @@ class Api
566
569
 
567
570
 
568
571
  def _destroy(delete_uri, args: nil)
569
- credentials, token = RemoteResource._credentials(self)
572
+ credentials, token = _credentials(self)
570
573
  response = Api.request Api.internalize_uri(delete_uri), :delete, headers: {},
571
574
  credentials: credentials, x_api_token: token,
572
575
  retries: retries, backoff_time: backoff_time, backoff_rate: backoff_rate,
data/lib/ocean/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ocean
2
- VERSION = "3.8.9"
2
+ VERSION = "3.9.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocean-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.9
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Bengtson