danthes 1.0.1 → 1.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.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # d'Anthès
2
2
 
3
+ ## 1.0.2 (September 7 2012)
4
+
5
+ * Subscription callback through sign call
6
+ * On subscription connect callback
7
+ * On subscription error callback
8
+ * Transport disabling
9
+
3
10
  ## 1.0.1 (August 26 2012)
4
11
 
5
12
  * Generator for redis config file
data/README.md CHANGED
@@ -39,7 +39,7 @@ It's not necessary to include faye's connect.js since that will be handled autom
39
39
 
40
40
  ## Serving Faye over HTTPS (with Thin)
41
41
 
42
- To serve Faye over HTTPS you could create a thin configuration file `config/private_pub_thin.yml` similar to the following:
42
+ To serve Faye over HTTPS you could create a thin configuration file `config/danthes_thin.yml` similar to the following:
43
43
 
44
44
  ```yaml
45
45
  ---
@@ -93,15 +93,19 @@ window.Danthes = class Danthes
93
93
  channel = options.channel
94
94
  unless @subscriptions[channel]?
95
95
  @subscriptions[channel] = {}
96
- @subscriptions[channel]['opts'] = options
96
+ @subscriptions[channel]['callback'] = options['callback'] if options['callback']?
97
+ @subscriptions[channel]['opts'] =
98
+ signature: options['signature']
99
+ timestamp: options['timestamp']
97
100
  @faye (faye) =>
98
- subscription = faye.subscribe channel, (message) =>
99
- @handleResponse(message)
101
+ subscription = faye.subscribe channel, (message) => @handleResponse(message)
100
102
  if subscription?
101
103
  @subscriptions[channel]['sub'] = subscription
102
104
  subscription.callback =>
105
+ options['connect']?(subscription)
103
106
  @debugMessage "subscription for #{channel} is active now"
104
107
  subscription.errback (error) =>
108
+ options['error']?(subscription, error)
105
109
  @debugMessage "error for #{channel}: #{error.message}"
106
110
 
107
111
  # Handle response from Faye
@@ -114,6 +118,15 @@ window.Danthes = class Danthes
114
118
  if callback = @subscriptions[channel]['callback']
115
119
  callback(message.data, channel)
116
120
 
121
+ # Disable transports
122
+ # @param [String] name of transport
123
+ @disableTransport: (transport) ->
124
+ return unless transport in ['websocket', 'long-polling', 'callback-polling', 'in-process']
125
+ unless transport in @disables
126
+ @disables.push(transport)
127
+ @debugMessage "#{transport} faye transport will be disabled"
128
+ true
129
+
117
130
  # Subscribe to channel with callback
118
131
  # @param channel [String] Channel name
119
132
  # @param callback [Function] Callback function
@@ -1,3 +1,3 @@
1
1
  module Danthes
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
@@ -6,7 +6,7 @@ describe "Danthes", ->
6
6
  faye = {subscribe: jasmine.createSpy()}
7
7
  spyOn(pub, 'faye').andCallFake (callback) ->
8
8
  callback(faye)
9
- options = {server: "server", channel: "#{channel}"}
9
+ options = {server: "server", channel: "#{channel}", timestamp: 1234567890, signature: '1234567890'}
10
10
  pub.sign(options)
11
11
  return [faye, options]
12
12
 
@@ -79,7 +79,7 @@ describe "Danthes", ->
79
79
  [faye, options] = signToChannel('somechannel')
80
80
  expect(faye.subscribe).toHaveBeenCalled()
81
81
  expect(pub.server).toEqual("server")
82
- expect(pub.subscriptions.somechannel.opts).toEqual(options)
82
+ expect(pub.subscriptions.somechannel.opts).toEqual(timestamp: options['timestamp'], signature: options['signature'])
83
83
 
84
84
  it "connects to faye server, adds extension, and executes callbacks", ->
85
85
  callback = jasmine.createSpy()
@@ -96,6 +96,41 @@ describe "Danthes", ->
96
96
  expect(client.addExtension).toHaveBeenCalledWith(pub.fayeExtension)
97
97
  expect(callback).toHaveBeenCalledWith(client)
98
98
 
99
+ it "adds transport to disables", ->
100
+ expect(pub.disableTransport('websocket')).toBeTruthy()
101
+ expect(pub.disables).toEqual(['websocket'])
102
+
103
+ it "adds transport to disables only one time", ->
104
+ pub.disableTransport('websocket')
105
+ pub.disableTransport('websocket')
106
+ expect(pub.disables).toEqual(['websocket'])
107
+
108
+ it "returns false if not accepted transport wants to be disabled", ->
109
+ expect(pub.disableTransport('websocket123')).toBeUndefined()
110
+ expect(pub.disables).toEqual([])
111
+
112
+ it "connects to faye server, and executes disable once", ->
113
+ callback = jasmine.createSpy()
114
+ client = {addExtension: jasmine.createSpy(), disable: jasmine.createSpy()}
115
+ window.Faye = {}
116
+ window.Faye.Client = (server) -> client
117
+ pub.server = "server"
118
+ pub.disableTransport('websocket')
119
+ pub.connectToFaye()
120
+ expect(client.disable).toHaveBeenCalledWith('websocket')
121
+
122
+ it "connects to faye server, and executes disable once", ->
123
+ callback = jasmine.createSpy()
124
+ client = {addExtension: jasmine.createSpy(), disable: jasmine.createSpy()}
125
+ window.Faye = {}
126
+ window.Faye.Client = (server) -> client
127
+ pub.server = "server"
128
+ pub.disableTransport('websocket')
129
+ pub.disableTransport('long-polling')
130
+ pub.connectToFaye()
131
+ expect(client.disable).toHaveBeenCalledWith('websocket')
132
+ expect(client.disable).toHaveBeenCalledWith('long-polling')
133
+
99
134
  it "adds subscription faye object into channel object", ->
100
135
  sub = {callback: jasmine.createSpy(), errback: jasmine.createSpy()}
101
136
  pub.fayeClient = {subscribe: jasmine.createSpy().andReturn(sub)}
@@ -105,6 +140,26 @@ describe "Danthes", ->
105
140
  expect(sub.errback).toHaveBeenCalled()
106
141
  expect(pub.subscriptions.somechannel.sub).toEqual(sub)
107
142
 
143
+ it "adds subscription faye object into channel object and call connect callback after connection", ->
144
+ sub =
145
+ callback: (f) ->
146
+ f()
147
+ errback: jasmine.createSpy()
148
+ pub.fayeClient = {subscribe: jasmine.createSpy().andReturn(sub)}
149
+ options = {server: "server", channel: 'somechannel', connect: jasmine.createSpy()}
150
+ pub.sign(options)
151
+ expect(options.connect).toHaveBeenCalledWith(sub)
152
+
153
+ it "adds subscription faye object into channel object and call error callback after connection", ->
154
+ sub =
155
+ callback: jasmine.createSpy()
156
+ errback: (f) ->
157
+ f('error')
158
+ pub.fayeClient = {subscribe: jasmine.createSpy().andReturn(sub)}
159
+ options = {server: "server", channel: 'somechannel', error: jasmine.createSpy()}
160
+ pub.sign(options)
161
+ expect(options.error).toHaveBeenCalledWith(sub, 'error')
162
+
108
163
  it "removes subscription to the channel", ->
109
164
  sub = {callback: jasmine.createSpy(), errback: jasmine.createSpy(), cancel: jasmine.createSpy()}
110
165
  pub.fayeClient = {subscribe: jasmine.createSpy().andReturn(sub)}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danthes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-26 00:00:00.000000000 Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faye