hyper-resource 1.0.0.lap65 → 1.0.0.lap66

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: fce7b5f2021671b32ab545d763a705fb80f526559dbf7cccf38a6d2576c29c00
4
- data.tar.gz: aaf880aaa20ba7e495a593868f294646e2bc662e11c9a2d478e8c2240b39e199
3
+ metadata.gz: 4ee8eab3b7eff49cb5b3a0f06043eaf33d6f7f57dc30ac4eac1b93aee10eaf02
4
+ data.tar.gz: 429255faceed5e914c021d0cdff236ec15d916ef80af987ce0f8ffc9623696c5
5
5
  SHA512:
6
- metadata.gz: ed12ffbb7d1d302d4551b1626599ffa7fa3039e8be87d82b100e2d3869f74b52d530a9c3450aa891645c0e4336ef45f4f2b455e580eb74f4a7d32d90542e2245
7
- data.tar.gz: 06604ef40129b82f59078c5aa50b810235a89ac34f14c7ebe257748749778a5703449802bcd55792f662e434337bea0d968d05c7f041f29e3aa754b513bcb73a
6
+ metadata.gz: b05ab3c365aca997b5f620ecdb6de504125cfbdcd9e3e0aa77b1079e1e78b76a518d1bda91c99fa4b8a2b6f44436f348999f5bdff1e351fd5b07ded60041a9ab
7
+ data.tar.gz: 3346b0e834f534cbd7beea750134dc4fa27adb92a0ac0b3819800288ae4a65daf5e674a6dcac3e0aeffab408d4200dc0cf0ec8bf866cf8c6794b44afacb1c5b5
@@ -71,6 +71,45 @@ module Hyperloop
71
71
  Hyperloop.redis_instance.del("HRPS__#{record.class}__#{record.id}") if record.destroyed?
72
72
  end
73
73
 
74
+ def publish_rest_class_method(record_class, rest_class_method_name)
75
+ subscribers = Hyperloop.redis_instance.hgetall("HRPS__#{record_class}__rest_class_method__#{rest_class_method_name}")
76
+ time_now = Time.now.to_f
77
+ scrub_time = time_now - 24.hours.to_f
78
+ subscribers.each do |session_id, last_requested|
79
+ if last_requested.to_f < scrub_time
80
+ Hyperloop.redis_instance.hdel("HRPS__#{record_class}__rest_class_method__#{rest_class_method_name}", session_id)
81
+ next
82
+ end
83
+ message = {
84
+ record_type: record_class.to_s,
85
+ rest_class_method: rest_class_method_name
86
+ }
87
+ if Hyperloop.resource_transport == :pusher
88
+ _pusher_client.trigger("hyper-record-update-channel-#{session_id}", 'update', message)
89
+ end
90
+ end
91
+ end
92
+
93
+ def publish_rest_method(record, method_name)
94
+ subscribers = Hyperloop.redis_instance.hgetall("HRPS__#{record.class}__#{record.id}__rest_method__#{method_name}")
95
+ time_now = Time.now.to_f
96
+ scrub_time = time_now - 24.hours.to_f
97
+ subscribers.each do |session_id, last_requested|
98
+ if last_requested.to_f < scrub_time
99
+ Hyperloop.redis_instance.hdel("HRPS__#{record.class}__#{record.id}__rest_method__#{method_name}", session_id)
100
+ next
101
+ end
102
+ message = {
103
+ record_type: record_class.to_s,
104
+ id: record.id,
105
+ rest_method: method_name
106
+ }
107
+ if Hyperloop.resource_transport == :pusher
108
+ _pusher_client.trigger("hyper-record-update-channel-#{session_id}", 'update', message)
109
+ end
110
+ end
111
+ end
112
+
74
113
  def publish_scope(record_class, scope_name)
75
114
  subscribers = Hyperloop.redis_instance.hgetall("HRPS__#{record_class}__scope__#{scope_name}")
76
115
  time_now = Time.now.to_f
@@ -113,6 +152,22 @@ module Hyperloop
113
152
  Hyperloop.redis_instance.hset "HRPS__#{record.class}__#{record.id}", session.id.to_s, Time.now.to_f.to_s
114
153
  end
115
154
 
155
+ def subscribe_rest_class_method(record_class, rest_class_method_name)
156
+ return unless session.id
157
+ time_now = Time.now.to_f.to_s
158
+ session_id = session.id.to_s
159
+ Hyperloop.redis_instance.pipelined do
160
+ Hyperloop.redis_instance.hset("HRPS__#{record_class}__rest_class_method_name__#{rest_class_method_name}", session_id, time_now)
161
+ end
162
+ end
163
+
164
+ def subscribe_rest_method(record, rest_method_name)
165
+ return unless session.id
166
+ time_now = Time.now.to_f.to_s
167
+ session_id = session.id.to_s
168
+ Hyperloop.redis_instance.hset("HRPS__#{record.class}__#{record.id}__rest_method__#{rest_method_name}", session_id, time_now)
169
+ end
170
+
116
171
  def subscribe_scope(collection, record_class = nil, scope_name = nil)
117
172
  return unless session.id
118
173
  time_now = Time.now.to_f.to_s
@@ -137,6 +192,16 @@ module Hyperloop
137
192
  publish_record(record)
138
193
  end
139
194
 
195
+ def pub_sub_rest_class_method(record_class, rest_class_method_name)
196
+ subscribe_rest_class_method(record_class, rest_class_method_name)
197
+ publish_rest_class_method(record_class, rest_class_method_name)
198
+ end
199
+
200
+ def pub_sub_rest_method(record, rest_method_name)
201
+ subscribe_rest_method(record, rest_method_name)
202
+ publish_rest_method(record, rest_method_name)
203
+ end
204
+
140
205
  def pub_sub_scope(collection, record_class, scope_name)
141
206
  subscribe_scope(collection, record_class, scope_name)
142
207
  publish_scope(record_class, scope_name)
@@ -1,5 +1,5 @@
1
1
  module Hyperloop
2
2
  module Resource
3
- VERSION = '1.0.0.lap65'
3
+ VERSION = '1.0.0.lap66'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.lap65
4
+ version: 1.0.0.lap66
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann