pusher 1.4.3 → 2.0.1
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 +4 -4
- data/CHANGELOG.md +74 -88
- data/README.md +8 -7
- data/lib/pusher.rb +0 -3
- data/lib/pusher/client.rb +42 -71
- data/lib/pusher/version.rb +1 -1
- metadata +7 -27
- data/.document +0 -5
- data/.gemtest +0 -0
- data/.github/stale.yml +0 -26
- data/.gitignore +0 -24
- data/.travis.yml +0 -16
- data/Gemfile +0 -2
- data/Rakefile +0 -11
- data/examples/async_message.rb +0 -28
- data/examples/presence_channels/presence_channels.rb +0 -56
- data/examples/presence_channels/public/presence_channels.html +0 -28
- data/lib/pusher/native_notification/client.rb +0 -69
- data/pusher.gemspec +0 -34
- data/spec/channel_spec.rb +0 -189
- data/spec/client_spec.rb +0 -786
- data/spec/spec_helper.rb +0 -26
- data/spec/web_hook_spec.rb +0 -117
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1ec4402d063ad4e8193f92bee0a9116987cd1388e3f21be49b7bfbe62ad4dbab
|
|
4
|
+
data.tar.gz: 0f974393c92fba1afbae6b85faf96d6950932cc0b24b538d1493300ec1e51e0d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d4f6e5cc6dc5a02db77200c18244e07dee27bc52abd3e4c376642b56e330d5d4bf86494c393ddeb340a38054c45ab3358eafc5a3d2dd0b8f17f471a8b6ba283d
|
|
7
|
+
data.tar.gz: ad18ed1ce95a46e383b9af71b38b528cae273083deafca6f3d187f4586a27d8a900c719be612a76822ef30b58b8e41ce15fac540f15f0f7904ce9276dd138b2c
|
data/CHANGELOG.md
CHANGED
|
@@ -1,139 +1,125 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2.0.1
|
|
4
|
+
|
|
5
|
+
* [CHANGED] Only include lib and essential docs in gem.
|
|
6
|
+
|
|
7
|
+
## 2.0.0
|
|
3
8
|
|
|
4
|
-
|
|
9
|
+
* [CHANGED] Use TLS by default.
|
|
10
|
+
* [REMOVED] Support for Ruby 2.4 and 2.5.
|
|
11
|
+
* [FIXED] Handle empty or nil configuration.
|
|
12
|
+
* [REMOVED] Legacy Push Notification integration.
|
|
13
|
+
* [ADDED] Stalebot and Github actions.
|
|
14
|
+
|
|
15
|
+
## 1.4.3
|
|
16
|
+
|
|
17
|
+
* [FIXED] Remove newline from end of base64 encoded strings, some decoders don't like
|
|
5
18
|
them.
|
|
6
19
|
|
|
7
|
-
1.4.2
|
|
20
|
+
## 1.4.2
|
|
8
21
|
==================
|
|
9
22
|
|
|
10
|
-
* Return `shared_secret` to support authenticating encrypted channels. Thanks
|
|
23
|
+
* [FIXED] Return `shared_secret` to support authenticating encrypted channels. Thanks
|
|
11
24
|
@Benjaminpjacobs
|
|
12
25
|
|
|
13
|
-
1.4.1
|
|
14
|
-
==================
|
|
26
|
+
## 1.4.1
|
|
15
27
|
|
|
16
|
-
* Remove rbnacl from dependencies so we don't get errors when it isn't
|
|
28
|
+
* [CHANGED] Remove rbnacl from dependencies so we don't get errors when it isn't
|
|
17
29
|
required. Thanks @y-yagi!
|
|
18
30
|
|
|
19
|
-
1.4.0
|
|
20
|
-
==================
|
|
31
|
+
## 1.4.0
|
|
21
32
|
|
|
22
|
-
* Support for end-to-end encryption.
|
|
33
|
+
* [ADDED] Support for end-to-end encryption.
|
|
23
34
|
|
|
24
|
-
1.3.3
|
|
25
|
-
==================
|
|
35
|
+
## 1.3.3
|
|
26
36
|
|
|
27
|
-
* Rewording to clarify "Pusher Channels" or simply "Channels" product name.
|
|
37
|
+
* [CHANGED] Rewording to clarify "Pusher Channels" or simply "Channels" product name.
|
|
28
38
|
|
|
29
|
-
1.3.2
|
|
30
|
-
==================
|
|
39
|
+
## 1.3.2
|
|
31
40
|
|
|
32
|
-
* Return a specific error for "Request Entity Too Large" (body over 10KB).
|
|
33
|
-
* Add a `use_tls` option for SSL (defaults to false).
|
|
34
|
-
* Add a `from_url` client method (in addition to existing `from_env` option).
|
|
35
|
-
* Improved documentation and fixed typos.
|
|
36
|
-
* Add Ruby 2.4 to test matrix.
|
|
41
|
+
* [FIXED] Return a specific error for "Request Entity Too Large" (body over 10KB).
|
|
42
|
+
* [ADDED] Add a `use_tls` option for SSL (defaults to false).
|
|
43
|
+
* [ADDED] Add a `from_url` client method (in addition to existing `from_env` option).
|
|
44
|
+
* [CHANGED] Improved documentation and fixed typos.
|
|
45
|
+
* [ADDED] Add Ruby 2.4 to test matrix.
|
|
37
46
|
|
|
38
|
-
1.3.1
|
|
39
|
-
==================
|
|
47
|
+
## 1.3.1
|
|
40
48
|
|
|
41
|
-
* Added missing client batch methods to default client delegations
|
|
42
|
-
* Document raised exception in the `authenticate` method
|
|
43
|
-
* Fixes em-http-request from using v2.5.0 of `addressable` breaking builds.
|
|
49
|
+
* [FIXED] Added missing client batch methods to default client delegations
|
|
50
|
+
* [CHANGED] Document raised exception in the `authenticate` method
|
|
51
|
+
* [FIXED] Fixes em-http-request from using v2.5.0 of `addressable` breaking builds.
|
|
44
52
|
|
|
45
|
-
1.3.0
|
|
46
|
-
==================
|
|
53
|
+
## 1.3.0
|
|
47
54
|
|
|
48
|
-
* Add support for sending push notifications on up to 10 interests.
|
|
55
|
+
* [ADDED] Add support for sending push notifications on up to 10 interests.
|
|
49
56
|
|
|
50
|
-
1.2.1
|
|
51
|
-
==================
|
|
57
|
+
## 1.2.1
|
|
52
58
|
|
|
53
|
-
* Fixes Rails 5 compatibility. Use duck-typing to detect request object
|
|
59
|
+
* [FIXED] Fixes Rails 5 compatibility. Use duck-typing to detect request object
|
|
54
60
|
|
|
55
|
-
1.2.0
|
|
56
|
-
==================
|
|
61
|
+
## 1.2.0
|
|
57
62
|
|
|
58
|
-
* Minor release for Native notifications
|
|
63
|
+
* [CHANGED] Minor release for Native notifications
|
|
59
64
|
|
|
60
|
-
1.2.0.rc1
|
|
61
|
-
==================
|
|
65
|
+
## 1.2.0.rc1
|
|
62
66
|
|
|
63
|
-
* Add support for Native notifications
|
|
67
|
+
* [ADDED] Add support for Native notifications
|
|
64
68
|
|
|
65
|
-
1.1.0
|
|
66
|
-
==================
|
|
69
|
+
## 1.1.0
|
|
67
70
|
|
|
68
|
-
* Add support for batch events
|
|
71
|
+
* [ADDED] Add support for batch events
|
|
69
72
|
|
|
70
|
-
1.0.0
|
|
71
|
-
==================
|
|
73
|
+
## 1.0.0
|
|
72
74
|
|
|
73
|
-
No breaking changes, this release is just to follow semver and show that we
|
|
75
|
+
* [CHANGED] No breaking changes, this release is just to follow semver and show that we
|
|
74
76
|
are stable.
|
|
75
77
|
|
|
76
|
-
0.18.0
|
|
77
|
-
==================
|
|
78
|
+
## 0.18.0
|
|
78
79
|
|
|
79
|
-
* Introduce `Pusher::Client.from_env`
|
|
80
|
-
* Improve error handling on missing config
|
|
80
|
+
* [ADDED] Introduce `Pusher::Client.from_env`
|
|
81
|
+
* [FIXED] Improve error handling on missing config
|
|
81
82
|
|
|
82
|
-
0.17.0
|
|
83
|
-
==================
|
|
83
|
+
## 0.17.0
|
|
84
84
|
|
|
85
|
-
* Introduce the `cluster` option.
|
|
85
|
+
* [ADDED] Introduce the `cluster` option.
|
|
86
86
|
|
|
87
|
-
0.16.0
|
|
88
|
-
==================
|
|
87
|
+
## 0.16.0
|
|
89
88
|
|
|
90
|
-
* Bump httpclient version to 2.7
|
|
91
|
-
* Ruby 1.8.7 is not supported anymore.
|
|
89
|
+
* [CHANGED] Bump httpclient version to 2.7
|
|
90
|
+
* [REMOVED] Ruby 1.8.7 is not supported anymore.
|
|
92
91
|
|
|
93
|
-
0.15.2
|
|
94
|
-
==================
|
|
92
|
+
## 0.15.2
|
|
95
93
|
|
|
96
|
-
* Documented `Pusher.channel_info`, `Pusher.channels`
|
|
97
|
-
* Added `Pusher.channel_users`
|
|
94
|
+
* [CHANGED] Documented `Pusher.channel_info`, `Pusher.channels`
|
|
95
|
+
* [ADDED] Added `Pusher.channel_users`
|
|
98
96
|
|
|
99
|
-
0.15.1
|
|
100
|
-
==================
|
|
97
|
+
## 0.15.1
|
|
101
98
|
|
|
102
|
-
* Fixed a bug where the `authenticate` method added in 0.15.0 wasn't exposed on the Pusher class.
|
|
99
|
+
* [FIXED] Fixed a bug where the `authenticate` method added in 0.15.0 wasn't exposed on the Pusher class.
|
|
103
100
|
|
|
104
|
-
0.15.0
|
|
105
|
-
==================
|
|
101
|
+
## 0.15.0
|
|
106
102
|
|
|
107
|
-
* Added `Pusher.authenticate` method for authenticating private and presence channels.
|
|
103
|
+
* [ADDED] Added `Pusher.authenticate` method for authenticating private and presence channels.
|
|
108
104
|
This is prefered over the older `Pusher['a_channel'].authenticate(...)` style.
|
|
109
105
|
|
|
110
|
-
0.14.6
|
|
111
|
-
==================
|
|
112
|
-
* Updated to use the `pusher-signature` gem instead of `signature`.
|
|
113
|
-
This resolves namespace related issues.
|
|
114
|
-
|
|
115
|
-
0.14.5 / 2015-05-11
|
|
116
|
-
==================
|
|
117
|
-
|
|
118
|
-
* SECURITY: Prevent auth delegation trough crafted socket IDs
|
|
106
|
+
## 0.14.6
|
|
119
107
|
|
|
120
|
-
|
|
121
|
-
|
|
108
|
+
* [CHANGED] Updated to use the `pusher-signature` gem instead of `signature`.
|
|
109
|
+
This resolves namespace related issues.
|
|
122
110
|
|
|
123
|
-
|
|
124
|
-
* SECURITY: Prevent POODLE. Disable SSLv3, update httpclient to v2.5
|
|
125
|
-
* Fix channel name character limit.
|
|
126
|
-
* Adds support for listing users on a presence channel
|
|
111
|
+
## 0.14.5
|
|
127
112
|
|
|
128
|
-
|
|
129
|
-
==================
|
|
113
|
+
* [SECURITY] Prevent auth delegation trough crafted socket IDs
|
|
130
114
|
|
|
131
|
-
|
|
115
|
+
## 0.14.4
|
|
132
116
|
|
|
133
|
-
|
|
134
|
-
|
|
117
|
+
* [SECURITY] Prevent timing attack, update signature to v0.1.8
|
|
118
|
+
* [SECURITY] Prevent POODLE. Disable SSLv3, update httpclient to v2.5
|
|
119
|
+
* [FIXED] Fix channel name character limit.
|
|
120
|
+
* [ADDED] Adds support for listing users on a presence channel
|
|
135
121
|
|
|
136
|
-
|
|
122
|
+
## 0.14.2
|
|
137
123
|
|
|
138
|
-
* Bump httpclient to v2.4. See #62 (POODLE SSL)
|
|
139
|
-
* Fix limited channel count at README.md. Thanks @tricknotes
|
|
124
|
+
* [CHANGED] Bump httpclient to v2.4. See #62 (POODLE SSL)
|
|
125
|
+
* [CHANGED] Fix limited channel count at README.md. Thanks @tricknotes
|
data/README.md
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
This Gem provides a Ruby interface to [the Pusher HTTP API for Pusher Channels](https://pusher.com/docs/channels/library_auth_reference/rest-api).
|
|
4
4
|
|
|
5
|
-
[](https://github.com/pusher/pusher-http-ruby/actions?query=workflow%3ATests+branch%3Amaster) [](https://rubygems.org/gems/pusher) [](https://rubygems.org/gems/pusher)
|
|
6
|
+
|
|
7
|
+
## Supported Platforms
|
|
8
|
+
|
|
9
|
+
* Ruby - supports **Ruby 2.6 or greater**.
|
|
6
10
|
|
|
7
11
|
## Installation and Configuration
|
|
8
12
|
|
|
@@ -36,7 +40,7 @@ pusher = Pusher::Client.new(
|
|
|
36
40
|
)
|
|
37
41
|
```
|
|
38
42
|
|
|
39
|
-
The `cluster` value will set the `host` to `api-<cluster>.pusher.com`. The `use_tls` value is optional and defaults to `
|
|
43
|
+
The `cluster` value will set the `host` to `api-<cluster>.pusher.com`. The `use_tls` value is optional and defaults to `true`. It will set the `scheme` and `port`. A custom `port` value takes precendence over `use_tls`.
|
|
40
44
|
|
|
41
45
|
If you want to set a custom `host` value for your client then you can do so when instantiating a Pusher Channels client like so:
|
|
42
46
|
|
|
@@ -79,11 +83,11 @@ If you need to make requests via a HTTP proxy then it can be configured
|
|
|
79
83
|
Pusher.http_proxy = 'http://(user):(password)@(host):(port)'
|
|
80
84
|
```
|
|
81
85
|
|
|
82
|
-
By default API requests are made over
|
|
86
|
+
By default API requests are made over HTTPS. HTTP can be used by setting `use_tls` to `false`.
|
|
83
87
|
Issuing this command is going to reset `port` value if it was previously specified.
|
|
84
88
|
|
|
85
89
|
``` ruby
|
|
86
|
-
Pusher.
|
|
90
|
+
Pusher.use_tls = false
|
|
87
91
|
```
|
|
88
92
|
|
|
89
93
|
As of version 0.12, SSL certificates are verified when using the synchronous http client. If you need to disable this behaviour for any reason use:
|
|
@@ -295,6 +299,3 @@ pusher.trigger(
|
|
|
295
299
|
```
|
|
296
300
|
|
|
297
301
|
Rationale: the methods in this library map directly to individual Channels HTTP API requests. If we allowed triggering a single event on multiple channels (some encrypted, some unencrypted), then it would require two API requests: one where the event is encrypted to the encrypted channels, and one where the event is unencrypted for unencrypted channels.
|
|
298
|
-
|
|
299
|
-
## Supported Ruby versions
|
|
300
|
-
2.4+
|
data/lib/pusher.rb
CHANGED
|
@@ -28,9 +28,7 @@ module Pusher
|
|
|
28
28
|
extend Forwardable
|
|
29
29
|
|
|
30
30
|
def_delegators :default_client, :scheme, :host, :port, :app_id, :key, :secret, :http_proxy
|
|
31
|
-
def_delegators :default_client, :notification_host, :notification_scheme
|
|
32
31
|
def_delegators :default_client, :scheme=, :host=, :port=, :app_id=, :key=, :secret=, :http_proxy=
|
|
33
|
-
def_delegators :default_client, :notification_host=, :notification_scheme=
|
|
34
32
|
|
|
35
33
|
def_delegators :default_client, :authentication_token, :url, :cluster
|
|
36
34
|
def_delegators :default_client, :encrypted=, :url=, :cluster=
|
|
@@ -66,4 +64,3 @@ require 'pusher/channel'
|
|
|
66
64
|
require 'pusher/request'
|
|
67
65
|
require 'pusher/resource'
|
|
68
66
|
require 'pusher/webhook'
|
|
69
|
-
require 'pusher/native_notification/client'
|
data/lib/pusher/client.rb
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
require 'base64'
|
|
2
|
-
|
|
3
2
|
require 'pusher-signature'
|
|
4
3
|
|
|
5
4
|
module Pusher
|
|
6
5
|
class Client
|
|
7
|
-
attr_accessor :scheme, :host, :port, :app_id, :key, :secret, :
|
|
6
|
+
attr_accessor :scheme, :host, :port, :app_id, :key, :secret, :encryption_master_key
|
|
8
7
|
attr_reader :http_proxy, :proxy
|
|
9
8
|
attr_writer :connect_timeout, :send_timeout, :receive_timeout,
|
|
10
9
|
:keep_alive_timeout
|
|
11
10
|
|
|
12
11
|
## CONFIGURATION ##
|
|
12
|
+
DEFAULT_CONNECT_TIMEOUT = 5
|
|
13
|
+
DEFAULT_SEND_TIMEOUT = 5
|
|
14
|
+
DEFAULT_RECEIVE_TIMEOUT = 5
|
|
15
|
+
DEFAULT_KEEP_ALIVE_TIMEOUT = 30
|
|
16
|
+
DEFAULT_CLUSTER = "mt1"
|
|
13
17
|
|
|
14
18
|
# Loads the configuration from an url in the environment
|
|
15
19
|
def self.from_env(key = 'PUSHER_URL')
|
|
@@ -25,51 +29,35 @@ module Pusher
|
|
|
25
29
|
end
|
|
26
30
|
|
|
27
31
|
def initialize(options = {})
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
:port => 80,
|
|
31
|
-
}
|
|
32
|
+
@scheme = "https"
|
|
33
|
+
@port = options[:port] || 443
|
|
32
34
|
|
|
33
|
-
if options
|
|
34
|
-
|
|
35
|
-
default_options[:port] = 443
|
|
35
|
+
if options.key?(:encrypted)
|
|
36
|
+
warn "[DEPRECATION] `encrypted` is deprecated and will be removed in the next major version. Use `use_tls` instead."
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
merged_options[:host] = options[:host]
|
|
42
|
-
elsif options.has_key?(:cluster)
|
|
43
|
-
merged_options[:host] = "api-#{options[:cluster]}.pusher.com"
|
|
44
|
-
else
|
|
45
|
-
merged_options[:host] = "api.pusherapp.com"
|
|
39
|
+
if options[:use_tls] == false || options[:encrypted] == false
|
|
40
|
+
@scheme = "http"
|
|
41
|
+
@port = options[:port] || 80
|
|
46
42
|
end
|
|
47
43
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
@app_id = options[:app_id]
|
|
45
|
+
@key = options[:key]
|
|
46
|
+
@secret = options[:secret]
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
@host = options[:host]
|
|
49
|
+
@host ||= "api-#{options[:cluster]}.pusher.com" unless options[:cluster].nil? || options[:cluster].empty?
|
|
50
|
+
@host ||= "api-#{DEFAULT_CLUSTER}.pusher.com"
|
|
54
51
|
|
|
55
|
-
@
|
|
56
|
-
merged_options.values_at(
|
|
57
|
-
:scheme, :host, :port, :app_id, :key, :secret, :notification_host, :notification_scheme
|
|
58
|
-
)
|
|
52
|
+
@encryption_master_key = Base64.strict_decode64(options[:encryption_master_key_base64]) if options[:encryption_master_key_base64]
|
|
59
53
|
|
|
60
|
-
|
|
61
|
-
@encryption_master_key =
|
|
62
|
-
Base64.strict_decode64(options[:encryption_master_key_base64])
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
@http_proxy = nil
|
|
66
|
-
self.http_proxy = options[:http_proxy] if options[:http_proxy]
|
|
54
|
+
@http_proxy = options[:http_proxy]
|
|
67
55
|
|
|
68
56
|
# Default timeouts
|
|
69
|
-
@connect_timeout =
|
|
70
|
-
@send_timeout =
|
|
71
|
-
@receive_timeout =
|
|
72
|
-
@keep_alive_timeout =
|
|
57
|
+
@connect_timeout = DEFAULT_CONNECT_TIMEOUT
|
|
58
|
+
@send_timeout = DEFAULT_SEND_TIMEOUT
|
|
59
|
+
@receive_timeout = DEFAULT_RECEIVE_TIMEOUT
|
|
60
|
+
@keep_alive_timeout = DEFAULT_KEEP_ALIVE_TIMEOUT
|
|
73
61
|
end
|
|
74
62
|
|
|
75
63
|
# @private Returns the authentication token for the client
|
|
@@ -83,10 +71,10 @@ module Pusher
|
|
|
83
71
|
def url(path = nil)
|
|
84
72
|
raise ConfigurationError, :app_id unless @app_id
|
|
85
73
|
URI::Generic.build({
|
|
86
|
-
:
|
|
87
|
-
:
|
|
88
|
-
:
|
|
89
|
-
:
|
|
74
|
+
scheme: @scheme,
|
|
75
|
+
host: @host,
|
|
76
|
+
port: @port,
|
|
77
|
+
path: "/apps/#{@app_id}#{path}"
|
|
90
78
|
})
|
|
91
79
|
end
|
|
92
80
|
|
|
@@ -110,13 +98,12 @@ module Pusher
|
|
|
110
98
|
@http_proxy = http_proxy
|
|
111
99
|
uri = URI.parse(http_proxy)
|
|
112
100
|
@proxy = {
|
|
113
|
-
:
|
|
114
|
-
:
|
|
115
|
-
:
|
|
116
|
-
:
|
|
117
|
-
:
|
|
101
|
+
scheme: uri.scheme,
|
|
102
|
+
host: uri.host,
|
|
103
|
+
port: uri.port,
|
|
104
|
+
user: uri.user,
|
|
105
|
+
password: uri.password
|
|
118
106
|
}
|
|
119
|
-
@http_proxy
|
|
120
107
|
end
|
|
121
108
|
|
|
122
109
|
# Configure whether Pusher API calls should be made over SSL
|
|
@@ -136,6 +123,8 @@ module Pusher
|
|
|
136
123
|
end
|
|
137
124
|
|
|
138
125
|
def cluster=(cluster)
|
|
126
|
+
cluster = DEFAULT_CLUSTER if cluster.nil? || cluster.empty?
|
|
127
|
+
|
|
139
128
|
@host = "api-#{cluster}.pusher.com"
|
|
140
129
|
end
|
|
141
130
|
|
|
@@ -330,24 +319,6 @@ module Pusher
|
|
|
330
319
|
post_async('/batch_events', trigger_batch_params(events.flatten))
|
|
331
320
|
end
|
|
332
321
|
|
|
333
|
-
def notification_client
|
|
334
|
-
@notification_client ||=
|
|
335
|
-
NativeNotification::Client.new(@app_id, @notification_host, @notification_scheme, self)
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
# Send a push notification
|
|
340
|
-
#
|
|
341
|
-
# POST /apps/[app_id]/notifications
|
|
342
|
-
#
|
|
343
|
-
# @param interests [Array] An array of interests
|
|
344
|
-
# @param message [String] Message to send
|
|
345
|
-
# @param options [Hash] Additional platform specific options
|
|
346
|
-
#
|
|
347
|
-
# @return [Hash]
|
|
348
|
-
def notify(interests, data = {})
|
|
349
|
-
notification_client.notify(interests, data)
|
|
350
|
-
end
|
|
351
322
|
|
|
352
323
|
# Generate the expected response for an authentication endpoint.
|
|
353
324
|
# See http://pusher.com/docs/authenticating_users for details.
|
|
@@ -386,9 +357,9 @@ module Pusher
|
|
|
386
357
|
|
|
387
358
|
# @private Construct a net/http http client
|
|
388
359
|
def sync_http_client
|
|
389
|
-
|
|
390
|
-
require 'httpclient'
|
|
360
|
+
require 'httpclient'
|
|
391
361
|
|
|
362
|
+
@client ||= begin
|
|
392
363
|
HTTPClient.new(@http_proxy).tap do |c|
|
|
393
364
|
c.connect_timeout = @connect_timeout
|
|
394
365
|
c.send_timeout = @send_timeout
|
|
@@ -407,14 +378,14 @@ module Pusher
|
|
|
407
378
|
require 'em-http' unless defined?(EventMachine::HttpRequest)
|
|
408
379
|
|
|
409
380
|
connection_opts = {
|
|
410
|
-
:
|
|
411
|
-
:
|
|
381
|
+
connect_timeout: @connect_timeout,
|
|
382
|
+
inactivity_timeout: @receive_timeout,
|
|
412
383
|
}
|
|
413
384
|
|
|
414
385
|
if defined?(@proxy)
|
|
415
386
|
proxy_opts = {
|
|
416
|
-
:
|
|
417
|
-
:
|
|
387
|
+
host: @proxy[:host],
|
|
388
|
+
port: @proxy[:port]
|
|
418
389
|
}
|
|
419
390
|
if @proxy[:user]
|
|
420
391
|
proxy_opts[:authorization] = [@proxy[:user], @proxy[:password]]
|