faye_tracking 0.2.2 → 0.2.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59510a6d0b8840e8d1a023e7688cce9e7dcba4b2
4
- data.tar.gz: a2eccf51d9d9ae29d31154ac8debffba9368cdc0
3
+ metadata.gz: 4d25e8f9595db01848dda129c76e4aa15f0ad8e0
4
+ data.tar.gz: e353842553b1d51dcd1e8b1e0dd49e55b8ebd232
5
5
  SHA512:
6
- metadata.gz: 98eceda9db22c158a7d46ce1b8998a68b6462304af15ff2a6d61535fee17993666d475d32f16446d97d45680a831c7222cc6023b59556df886addd34a77ffbe3
7
- data.tar.gz: be8768b99523474637524d1e24fff8ad4c3e9dd2c05e9dfdf650715d6910db308fe78aa19687b3da910f7ece8055c34194718441eb68f80a5ad2457e3fddedc5
6
+ metadata.gz: aa8fba78c26b0301ab57ce157cfec9deb9aacb049a70a328dcd9324bef9b9e652b340fb11b76065bb1c935f32ea5a18a32323a57b0670e1f89e3721d256a86c7
7
+ data.tar.gz: 9ce51c9b99728bcf4d2126a2bf4d0ece75a9af0d8731cd7afa6cf38a4213d170f50f90f2ea65491419718ce959e1d1136c20bdaa7950b2397393584a13f46ad8
data/.gitignore CHANGED
@@ -13,3 +13,4 @@
13
13
  *.a
14
14
  mkmf.log
15
15
  *.gem
16
+ dump.rdb
data/lib/faye_tracking.rb CHANGED
@@ -43,6 +43,22 @@ module FayeTracking
43
43
  def tracker
44
44
  @_tracker = Tracker.new(redis)
45
45
  end
46
+
47
+ def on_subscribe_callbacks
48
+ @_on_subscribe_callbacks || reset_on_subscribe_callbacks
49
+ end
50
+
51
+ def on_subscribe(&block)
52
+ on_subscribe_callbacks << block
53
+ end
54
+
55
+ def run_on_subscribe_callbacks(*args)
56
+ on_subscribe_callbacks.each { |blk| blk.call(*args) }
57
+ end
58
+
59
+ def reset_on_subscribe_callbacks
60
+ @_on_subscribe_callbacks = []
61
+ end
46
62
  end
47
63
  end
48
64
 
@@ -1,13 +1,18 @@
1
1
  module FayeTracking
2
2
  class FayeExtension
3
- MONITORED_CHANNELS = [ '/meta/subscribe', '/meta/unsubscribe', '/meta/disconnect' ]
3
+ MONITORED_CHANNELS = [
4
+ '/meta/subscribe',
5
+ '/meta/unsubscribe',
6
+ '/meta/disconnect'
7
+ ]
4
8
 
5
9
  def initialize(tracker)
6
10
  @tracker = tracker
7
11
  end
8
12
 
9
13
  def incoming(message, callback)
10
- return callback.call(message) unless MONITORED_CHANNELS.include? message['channel']
14
+ return callback.call(message) \
15
+ unless MONITORED_CHANNELS.include? message['channel']
11
16
 
12
17
  FayeTracking.logger.debug "received incoming message: #{message}"
13
18
 
@@ -20,12 +25,17 @@ module FayeTracking
20
25
  ext = message['ext']
21
26
  if app_client_id = ext['faye_tracking_client_id']
22
27
  @tracker.add(subs_channel, client_id, app_client_id)
28
+ FayeTracking.run_on_subscribe_callbacks(
29
+ client_id, app_client_id, subs_channel
30
+ )
23
31
  else
24
32
  error_message = "missing ext['faye_tracking_client_id']"
25
- FayeTracking.logger.debug "error with message: #{error_message}"
33
+ FayeTracking.logger.error "error with message: #{error_message}"
26
34
  message['error'] = error_message
27
35
  end
28
36
  when '/meta/unsubscribe'
37
+ # This is not reliable, more robust way to detect unsubscribe event.
38
+ # see: http://faye.jcoglan.com/ruby/monitoring.html
29
39
  @tracker.remove(subs_channel, client_id)
30
40
  when '/meta/disconnect'
31
41
  @tracker.remove_all(client_id)
@@ -1,8 +1,9 @@
1
1
  module FayeTracking
2
2
  class NamespacedKeyList < AbstractKeyList
3
3
  def initialize(ns, key_list)
4
- raise ArgumentError, 'namespace param cannot be blank' if ns.nil? || ns.empty?
5
-
4
+ raise ArgumentError, 'namespace param cannot be blank' \
5
+ if ns.nil? || ns.empty?
6
+
6
7
  @ns = ns
7
8
  @key_list = key_list
8
9
  end
@@ -1,3 +1,3 @@
1
1
  module FayeTracking
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -42,7 +42,19 @@ describe FayeTracking do
42
42
 
43
43
  it 'returns all users in a channel' do
44
44
  faye_subscribe 'room', client_id, 'user_2'
45
- expect(described_class.users_in_channel('room')).to match_array(['user_1', 'user_2'])
45
+ expect(described_class.users_in_channel('room')).to \
46
+ match_array(['user_1', 'user_2'])
47
+ end
48
+ end
49
+
50
+ describe 'customize subscribe block' do
51
+ it 'can set a customize subscribe block' do
52
+ result = nil
53
+ FayeTracking.on_subscribe do |client_id, user_id, channel|
54
+ result = [client_id, user_id, channel]
55
+ end
56
+ faye_subscribe 'room', client_id, 'user_1'
57
+ expect(result).to eq([client_id, 'user_1', 'room'])
46
58
  end
47
59
  end
48
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faye_tracking
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lin He
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-10 00:00:00.000000000 Z
11
+ date: 2015-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis