pusher 0.16.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +45 -35
- data/lib/pusher.rb +1 -1
- data/lib/pusher/client.rb +18 -4
- data/pusher.gemspec +1 -1
- data/spec/client_spec.rb +54 -0
- metadata +4 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c321a0933bab4b4ccfbefa2c9e83eadab92d622c
|
4
|
+
data.tar.gz: ecb892017e868a125e8a11bdb130c8f9069d9dcb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9db9cd31686cab8565d2fc2a0b4c57270728b69dc592c2dbb5baaa7c7df509b1c40836e3f9d550703e2e330b5c5198defc7935e5033ab7039bba91015ea3c5b7
|
7
|
+
data.tar.gz: cea7de20ba9b57db2ff5e58fbc8bed35dfd8cf02ca88fb31b3929ba34b7a6036fef6b94fba0e244e0cc3b0549c288b5d3bf8d3d348e9acee0587542c31ab2e87
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -19,9 +19,46 @@ gem install pusher
|
|
19
19
|
|
20
20
|
After registering at <http://pusher.com> configure your app with the security credentials.
|
21
21
|
|
22
|
-
###
|
22
|
+
### Instantiating a Pusher client
|
23
|
+
|
24
|
+
Creating a new Pusher `client` can be done as follows.
|
25
|
+
|
26
|
+
``` ruby
|
27
|
+
pusher_client = Pusher::Client.new(
|
28
|
+
app_id: 'your-pusher-app-id',
|
29
|
+
key: 'your-pusher-key',
|
30
|
+
secret: 'your-pusher-secret'
|
31
|
+
)
|
32
|
+
```
|
33
|
+
|
34
|
+
If you want to set a custom `host` value for your client then you can do so when instantiating a Pusher client like so:
|
35
|
+
|
36
|
+
``` ruby
|
37
|
+
pusher_client = Pusher::Client.new(
|
38
|
+
app_id: 'your-pusher-app-id',
|
39
|
+
key: 'your-pusher-key',
|
40
|
+
secret: 'your-pusher-secret',
|
41
|
+
host: 'your-pusher-host'
|
42
|
+
)
|
43
|
+
```
|
44
|
+
|
45
|
+
If you created your app in a different cluster to the default cluster, you must pass the `cluster` option as follows:
|
46
|
+
|
47
|
+
``` ruby
|
48
|
+
pusher_client = Pusher::Client.new(
|
49
|
+
app_id: 'your-pusher-app-id',
|
50
|
+
key: 'your-pusher-key',
|
51
|
+
secret: 'your-pusher-secret',
|
52
|
+
cluster: 'your-app-cluster'
|
53
|
+
)
|
54
|
+
```
|
55
|
+
|
56
|
+
This will set the `host` to `api-<cluster>.pusher.com`. If you pass both `host` and `cluster` options, the `host` will take precendence and `cluster` will be ignored.
|
57
|
+
|
58
|
+
### Global (Deprecated)
|
23
59
|
|
24
|
-
|
60
|
+
Configuring Pusher can also be done globally on the Pusher class.
|
61
|
+
*NOTE! This is a deprecated feature and will be removed in future versions of this library!*
|
25
62
|
|
26
63
|
``` ruby
|
27
64
|
Pusher.app_id = 'your-pusher-app-id'
|
@@ -49,33 +86,6 @@ As of version 0.12, SSL certificates are verified when using the synchronous htt
|
|
49
86
|
Pusher.default_client.sync_http_client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
50
87
|
```
|
51
88
|
|
52
|
-
### Instantiating a Pusher client
|
53
|
-
|
54
|
-
Sometimes you may have multiple sets of API keys, or want different configuration in different parts of your application. In these scenarios, a pusher `client` may be configured:
|
55
|
-
|
56
|
-
``` ruby
|
57
|
-
pusher_client = Pusher::Client.new({
|
58
|
-
app_id: 'your-pusher-app-id',
|
59
|
-
key: 'your-pusher-key',
|
60
|
-
secret: 'your-pusher-secret'
|
61
|
-
})
|
62
|
-
```
|
63
|
-
|
64
|
-
This `client` will have all the functionality listed on the main Pusher class (which proxies to a client internally).
|
65
|
-
|
66
|
-
If you want to set the `host` value for your client then you can do so when instantiating a Pusher client like so:
|
67
|
-
|
68
|
-
``` ruby
|
69
|
-
pusher_client = Pusher::Client.new({
|
70
|
-
app_id: 'your-pusher-app-id',
|
71
|
-
key: 'your-pusher-key',
|
72
|
-
secret: 'your-pusher-secret',
|
73
|
-
host: 'your-pusher-host'
|
74
|
-
})
|
75
|
-
```
|
76
|
-
|
77
|
-
This is useful if, for example, you've created an app on the EU cluster and wish to set the host to be `api-eu.pusher.com`.
|
78
|
-
|
79
89
|
## Interacting with the Pusher service
|
80
90
|
|
81
91
|
The Pusher gem contains a number of helpers for interacting with the service. As a general rule, the library adheres to a set of conventions that we have aimed to make universal.
|
@@ -86,7 +96,7 @@ Handle errors by rescuing `Pusher::Error` (all errors are descendants of this er
|
|
86
96
|
|
87
97
|
``` ruby
|
88
98
|
begin
|
89
|
-
Pusher.trigger('a_channel', 'an_event',
|
99
|
+
Pusher.trigger('a_channel', 'an_event', :some => 'data')
|
90
100
|
rescue Pusher::Error => e
|
91
101
|
# (Pusher::AuthenticationError, Pusher::HTTPError, or Pusher::Error)
|
92
102
|
end
|
@@ -105,8 +115,8 @@ Pusher.logger = Rails.logger
|
|
105
115
|
An event can be published to one or more channels (limited to 10) in one API call:
|
106
116
|
|
107
117
|
``` ruby
|
108
|
-
Pusher.trigger('channel', 'event',
|
109
|
-
Pusher.trigger(['channel_1', 'channel_2'], 'event_name',
|
118
|
+
Pusher.trigger('channel', 'event', foo: 'bar')
|
119
|
+
Pusher.trigger(['channel_1', 'channel_2'], 'event_name', foo: 'bar')
|
110
120
|
```
|
111
121
|
|
112
122
|
An optional fourth argument may be used to send additional parameters to the API, for example to [exclude a single connection from receiving the event](http://pusher.com/docs/publisher_api_guide/publisher_excluding_recipients).
|
@@ -120,7 +130,7 @@ Pusher.trigger('channel', 'event', {foo: 'bar'}, {socket_id: '123.456'})
|
|
120
130
|
Most examples and documentation will refer to the following syntax for triggering an event:
|
121
131
|
|
122
132
|
``` ruby
|
123
|
-
Pusher['a_channel'].trigger('an_event',
|
133
|
+
Pusher['a_channel'].trigger('an_event', :some => 'data')
|
124
134
|
```
|
125
135
|
|
126
136
|
This will continue to work, but has been replaced by `Pusher.trigger` which supports one or multiple channels.
|
@@ -193,10 +203,10 @@ Pusher.authenticate('private-my_channel', params[:socket_id])
|
|
193
203
|
These work in a very similar way, but require a unique identifier for the user being authenticated, and optionally some attributes that are provided to clients via presence events:
|
194
204
|
|
195
205
|
``` ruby
|
196
|
-
Pusher.authenticate('presence-my_channel', params[:socket_id],
|
206
|
+
Pusher.authenticate('presence-my_channel', params[:socket_id],
|
197
207
|
user_id: 'user_id',
|
198
208
|
user_info: {} # optional
|
199
|
-
|
209
|
+
)
|
200
210
|
```
|
201
211
|
|
202
212
|
## Receiving WebHooks
|
data/lib/pusher.rb
CHANGED
@@ -27,7 +27,7 @@ module Pusher
|
|
27
27
|
def_delegators :default_client, :scheme=, :host=, :port=, :app_id=, :key=, :secret=, :http_proxy=
|
28
28
|
|
29
29
|
def_delegators :default_client, :authentication_token, :url
|
30
|
-
def_delegators :default_client, :encrypted=, :url=
|
30
|
+
def_delegators :default_client, :encrypted=, :url=, :cluster=
|
31
31
|
def_delegators :default_client, :timeout=, :connect_timeout=, :send_timeout=, :receive_timeout=, :keep_alive_timeout=
|
32
32
|
|
33
33
|
def_delegators :default_client, :get, :get_async, :post, :post_async
|
data/lib/pusher/client.rb
CHANGED
@@ -10,14 +10,24 @@ module Pusher
|
|
10
10
|
## CONFIGURATION ##
|
11
11
|
|
12
12
|
def initialize(options = {})
|
13
|
-
|
13
|
+
default_options = {
|
14
14
|
:scheme => 'http',
|
15
|
-
:host => 'api.pusherapp.com',
|
16
15
|
:port => 80,
|
17
|
-
}
|
18
|
-
|
16
|
+
}
|
17
|
+
merged_options = default_options.merge(options)
|
18
|
+
|
19
|
+
if options.has_key?(:host)
|
20
|
+
merged_options[:host] = options[:host]
|
21
|
+
elsif options.has_key?(:cluster)
|
22
|
+
merged_options[:host] = "api-#{options[:cluster]}.pusher.com"
|
23
|
+
else
|
24
|
+
merged_options[:host] = "api.pusherapp.com"
|
25
|
+
end
|
26
|
+
|
27
|
+
@scheme, @host, @port, @app_id, @key, @secret = merged_options.values_at(
|
19
28
|
:scheme, :host, :port, :app_id, :key, :secret
|
20
29
|
)
|
30
|
+
|
21
31
|
@http_proxy = nil
|
22
32
|
self.http_proxy = options[:http_proxy] if options[:http_proxy]
|
23
33
|
|
@@ -88,6 +98,10 @@ module Pusher
|
|
88
98
|
@scheme == 'https'
|
89
99
|
end
|
90
100
|
|
101
|
+
def cluster=(cluster)
|
102
|
+
@host = "api-#{cluster}.pusher.com"
|
103
|
+
end
|
104
|
+
|
91
105
|
# Convenience method to set all timeouts to the same value (in seconds).
|
92
106
|
# For more control, use the individual writers.
|
93
107
|
def timeout=(value)
|
data/pusher.gemspec
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -60,6 +60,38 @@ describe Pusher do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
describe 'configuring the cluster' do
|
64
|
+
it 'should set a new default host' do
|
65
|
+
@client.cluster = 'eu'
|
66
|
+
expect(@client.host).to eq('api-eu.pusher.com')
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should be overridden by host if it comes after' do
|
70
|
+
@client.cluster = 'eu'
|
71
|
+
@client.host = 'api.staging.pusher.com'
|
72
|
+
expect(@client.host).to eq('api.staging.pusher.com')
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should be overridden by url if it comes after' do
|
76
|
+
@client.cluster = 'eu'
|
77
|
+
@client.url = "http://somekey:somesecret@api.staging.pusherapp.com:8080/apps/87"
|
78
|
+
|
79
|
+
expect(@client.host).to eq('api.staging.pusherapp.com')
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should get override the url configuration if it comes after' do
|
83
|
+
@client.url = "http://somekey:somesecret@api.staging.pusherapp.com:8080/apps/87"
|
84
|
+
@client.cluster = 'eu'
|
85
|
+
expect(@client.host).to eq('api-eu.pusher.com')
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should overrie by the host configuration if it comes after' do
|
89
|
+
@client.host = 'api.staging.pusher.com'
|
90
|
+
@client.cluster = 'eu'
|
91
|
+
expect(@client.host).to eq('api-eu.pusher.com')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
63
95
|
describe 'configuring a http proxy' do
|
64
96
|
it "should be possible to configure everything by setting the http_proxy" do
|
65
97
|
@client.http_proxy = 'http://someuser:somepassword@proxy.host.com:8080'
|
@@ -431,4 +463,26 @@ describe Pusher do
|
|
431
463
|
end
|
432
464
|
end
|
433
465
|
end
|
466
|
+
|
467
|
+
describe 'configuring cluster' do
|
468
|
+
it 'should allow clients to specify the cluster only with the default host' do
|
469
|
+
client = Pusher::Client.new({
|
470
|
+
:scheme => 'http',
|
471
|
+
:cluster => 'eu',
|
472
|
+
:port => 80
|
473
|
+
})
|
474
|
+
expect(client.host).to eq('api-eu.pusher.com')
|
475
|
+
end
|
476
|
+
|
477
|
+
it 'should always have host override any supplied cluster value' do
|
478
|
+
client = Pusher::Client.new({
|
479
|
+
:scheme => 'http',
|
480
|
+
:host => 'api.staging.pusherapp.com',
|
481
|
+
:cluster => 'eu',
|
482
|
+
:port => 80
|
483
|
+
})
|
484
|
+
expect(client.host).to eq('api.staging.pusherapp.com')
|
485
|
+
end
|
486
|
+
end
|
434
487
|
end
|
488
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pusher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pusher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -184,12 +184,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
184
|
version: '0'
|
185
185
|
requirements: []
|
186
186
|
rubyforge_project:
|
187
|
-
rubygems_version: 2.5.1
|
187
|
+
rubygems_version: 2.4.5.1
|
188
188
|
signing_key:
|
189
189
|
specification_version: 4
|
190
190
|
summary: Pusher API client
|
191
|
-
test_files:
|
192
|
-
- spec/channel_spec.rb
|
193
|
-
- spec/client_spec.rb
|
194
|
-
- spec/spec_helper.rb
|
195
|
-
- spec/web_hook_spec.rb
|
191
|
+
test_files: []
|