hyper-resource 1.0.0.lap37 → 1.0.0.lap38
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7b649c6ec2096366f08fa25d95af57a01e869b764534bc1ae93b0d10fc60497
|
4
|
+
data.tar.gz: b09a6a3ce5354eaf2731b427cb6b5a45c4901007448d96974f5d0acfa97e8fbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d73031cd588bdb8b5e27976d947773316d69a3206053a4ce8a7a8187ab63f54eecaf55622eab3728ccd4b8ceb2dea916b7f9b082c95a6e8de4e3c30701c93a8
|
7
|
+
data.tar.gz: baace49e8182fbde221c2335dcdf56179237a8aa575630926d3a51c50c19822ae0d78edbe58419cbc0d7f9ee87d7b9a8df05f280827efef81cfa759352479a41
|
@@ -301,7 +301,7 @@ module HyperRecord
|
|
301
301
|
define_method(name) do |*args|
|
302
302
|
_register_observer
|
303
303
|
if self.id && (@rest_methods_hash[name][:force] || !@rest_methods_hash[name].has_key?(:result))
|
304
|
-
self.class.
|
304
|
+
self.class._promise_get_or_patch("#{resource_base_uri}/#{self.id}/methods/#{name}.json?timestamp=#{`Date.now() + Math.random()`}", *args).then do |result|
|
305
305
|
@rest_methods_hash[name][:result] = result # result is parsed json
|
306
306
|
_notify_observers
|
307
307
|
@rest_methods_hash[name][:result]
|
@@ -329,12 +329,12 @@ module HyperRecord
|
|
329
329
|
|
330
330
|
def scope(name, options)
|
331
331
|
scopes[name] = HyperRecord::Collection.new
|
332
|
-
define_singleton_method(name) do
|
332
|
+
define_singleton_method(name) do |*args|
|
333
333
|
if _class_fetch_states[name] == 'f'
|
334
334
|
scopes[name]
|
335
335
|
else
|
336
336
|
_register_class_observer
|
337
|
-
self.
|
337
|
+
self._promise_get_or_patch("#{resource_base_uri}/scopes/#{name}.json", *args).then do |response|
|
338
338
|
scopes[name] = _convert_array_to_collection(response.json[self.to_s.underscore][name])
|
339
339
|
_class_fetch_states[name] = 'f'
|
340
340
|
_notify_class_observers
|
@@ -408,6 +408,19 @@ module HyperRecord
|
|
408
408
|
Hyperloop::Resource::HTTP.get(uri, headers: { 'Content-Type' => 'application/json' })
|
409
409
|
end
|
410
410
|
|
411
|
+
def _promise_get_or_patch(uri, *args)
|
412
|
+
if args && args.size > 0
|
413
|
+
payload = { params: args }
|
414
|
+
_promise_patch(uri, payload).then do |result|
|
415
|
+
result.json[:result]
|
416
|
+
end
|
417
|
+
else
|
418
|
+
_promise_get(uri).then do |result|
|
419
|
+
result.json[:result]
|
420
|
+
end
|
421
|
+
end
|
422
|
+
end
|
423
|
+
|
411
424
|
def _promise_delete(uri)
|
412
425
|
Hyperloop::Resource::HTTP.delete(uri, headers: { 'Content-Type' => 'application/json' })
|
413
426
|
end
|
@@ -439,20 +452,6 @@ module HyperRecord
|
|
439
452
|
_class_observers << observer # @observers is a set, observers get added only once
|
440
453
|
end
|
441
454
|
end
|
442
|
-
|
443
|
-
def _rest_method_get_or_patch(name, id, *args)
|
444
|
-
uri = "#{resource_base_uri}/#{id}/methods/#{name}.json?timestamp=#{`Date.now() + Math.random()`}" # timestamp to invalidate browser caches
|
445
|
-
if args && args.size > 0
|
446
|
-
payload = { params: args }
|
447
|
-
_promise_patch(uri, payload).then do |result|
|
448
|
-
result.json[:result]
|
449
|
-
end
|
450
|
-
else
|
451
|
-
_promise_get(uri).then do |result|
|
452
|
-
result.json[:result]
|
453
|
-
end
|
454
|
-
end
|
455
|
-
end
|
456
455
|
end
|
457
456
|
|
458
457
|
end
|
@@ -17,8 +17,8 @@ class Hyperloop::Resource::ScopesController < ApplicationController
|
|
17
17
|
@record_class = guarded_record_class_from_param(mc_param)
|
18
18
|
@scope_name = params[:id].to_sym # :id is the scope name
|
19
19
|
@collection = nil
|
20
|
-
if @record_class && @record_class.scopes.has_key?(@scope_name)
|
21
|
-
@collection = @record_class.send(@scope_name)
|
20
|
+
if @record_class && @record_class.scopes.has_key?(@scope_name) # guard
|
21
|
+
@collection = @record_class.send(@scope_name)
|
22
22
|
end
|
23
23
|
respond_to do |format|
|
24
24
|
if @record_class && @collection
|
@@ -29,8 +29,26 @@ class Hyperloop::Resource::ScopesController < ApplicationController
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
def update
|
33
|
+
mc_param = record_class_param
|
34
|
+
mc_param = mc_param.chop if mc_param.end_with?('s')
|
35
|
+
@model_klass = guarded_record_class_from_param(mc_param)
|
36
|
+
@scope_name = params[:id].to_sym # :id is the scope name
|
37
|
+
@collection = nil
|
38
|
+
if @model_klass && @model_klass.scopes.has_key?(@scope_name) # guard
|
39
|
+
@collection = @model_klass.send(@scope_name, params[:params])
|
40
|
+
end
|
41
|
+
respond_to do |format|
|
42
|
+
if @model_klass && @collection
|
43
|
+
format.json
|
44
|
+
else
|
45
|
+
format.json { render json: {}, status: :unprocessable_entity }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
32
50
|
private
|
33
|
-
|
51
|
+
|
34
52
|
def record_class_param
|
35
53
|
params.require(:record_class)
|
36
54
|
end
|