pusher 1.4.2 → 2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +81 -85
- data/README.md +8 -7
- data/lib/pusher/client.rb +45 -74
- data/lib/pusher/version.rb +1 -1
- data/lib/pusher.rb +4 -5
- metadata +4 -24
- 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: b567f2d8e33ab63ee101f1d463ee826ef9deb173509724a0df6996b73fac1249
|
|
4
|
+
data.tar.gz: 9e0e443c7769c8520be0f9f72b2db5d95c9a9f221f0221df48b0eee0267f60a1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9b9d18e469e431fd495fee4eadb33ed0f982fbc796033d036fb3366853a72634a88be4b77fd21bd4c1387b02f00b6f635fbc766bb783cb36987fb81415717fb4
|
|
7
|
+
data.tar.gz: 762bb0188b7ee29aa1ff87d235383fc0ca1ded17b251171b091d44d621796faf06b176db4580e2cef6c44c44da8bc5296ec7c3867315faa87ff42a200558425f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,133 +1,129 @@
|
|
|
1
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2.0.2
|
|
4
|
+
|
|
5
|
+
* [CHANGED] made encryption_master_key_base64 globally configurable
|
|
6
|
+
|
|
7
|
+
## 2.0.1
|
|
8
|
+
|
|
9
|
+
* [CHANGED] Only include lib and essential docs in gem.
|
|
10
|
+
|
|
11
|
+
## 2.0.0
|
|
12
|
+
|
|
13
|
+
* [CHANGED] Use TLS by default.
|
|
14
|
+
* [REMOVED] Support for Ruby 2.4 and 2.5.
|
|
15
|
+
* [FIXED] Handle empty or nil configuration.
|
|
16
|
+
* [REMOVED] Legacy Push Notification integration.
|
|
17
|
+
* [ADDED] Stalebot and Github actions.
|
|
18
|
+
|
|
19
|
+
## 1.4.3
|
|
20
|
+
|
|
21
|
+
* [FIXED] Remove newline from end of base64 encoded strings, some decoders don't like
|
|
22
|
+
them.
|
|
23
|
+
|
|
24
|
+
## 1.4.2
|
|
2
25
|
==================
|
|
3
26
|
|
|
4
|
-
* Return `shared_secret` to support authenticating encrypted channels. Thanks
|
|
27
|
+
* [FIXED] Return `shared_secret` to support authenticating encrypted channels. Thanks
|
|
5
28
|
@Benjaminpjacobs
|
|
6
29
|
|
|
7
|
-
1.4.1
|
|
8
|
-
==================
|
|
30
|
+
## 1.4.1
|
|
9
31
|
|
|
10
|
-
* Remove rbnacl from dependencies so we don't get errors when it isn't
|
|
32
|
+
* [CHANGED] Remove rbnacl from dependencies so we don't get errors when it isn't
|
|
11
33
|
required. Thanks @y-yagi!
|
|
12
34
|
|
|
13
|
-
1.4.0
|
|
14
|
-
==================
|
|
35
|
+
## 1.4.0
|
|
15
36
|
|
|
16
|
-
* Support for end-to-end encryption.
|
|
37
|
+
* [ADDED] Support for end-to-end encryption.
|
|
17
38
|
|
|
18
|
-
1.3.3
|
|
19
|
-
==================
|
|
39
|
+
## 1.3.3
|
|
20
40
|
|
|
21
|
-
* Rewording to clarify "Pusher Channels" or simply "Channels" product name.
|
|
41
|
+
* [CHANGED] Rewording to clarify "Pusher Channels" or simply "Channels" product name.
|
|
22
42
|
|
|
23
|
-
1.3.2
|
|
24
|
-
==================
|
|
43
|
+
## 1.3.2
|
|
25
44
|
|
|
26
|
-
* Return a specific error for "Request Entity Too Large" (body over 10KB).
|
|
27
|
-
* Add a `use_tls` option for SSL (defaults to false).
|
|
28
|
-
* Add a `from_url` client method (in addition to existing `from_env` option).
|
|
29
|
-
* Improved documentation and fixed typos.
|
|
30
|
-
* Add Ruby 2.4 to test matrix.
|
|
45
|
+
* [FIXED] Return a specific error for "Request Entity Too Large" (body over 10KB).
|
|
46
|
+
* [ADDED] Add a `use_tls` option for SSL (defaults to false).
|
|
47
|
+
* [ADDED] Add a `from_url` client method (in addition to existing `from_env` option).
|
|
48
|
+
* [CHANGED] Improved documentation and fixed typos.
|
|
49
|
+
* [ADDED] Add Ruby 2.4 to test matrix.
|
|
31
50
|
|
|
32
|
-
1.3.1
|
|
33
|
-
==================
|
|
51
|
+
## 1.3.1
|
|
34
52
|
|
|
35
|
-
* Added missing client batch methods to default client delegations
|
|
36
|
-
* Document raised exception in the `authenticate` method
|
|
37
|
-
* Fixes em-http-request from using v2.5.0 of `addressable` breaking builds.
|
|
53
|
+
* [FIXED] Added missing client batch methods to default client delegations
|
|
54
|
+
* [CHANGED] Document raised exception in the `authenticate` method
|
|
55
|
+
* [FIXED] Fixes em-http-request from using v2.5.0 of `addressable` breaking builds.
|
|
38
56
|
|
|
39
|
-
1.3.0
|
|
40
|
-
==================
|
|
57
|
+
## 1.3.0
|
|
41
58
|
|
|
42
|
-
* Add support for sending push notifications on up to 10 interests.
|
|
59
|
+
* [ADDED] Add support for sending push notifications on up to 10 interests.
|
|
43
60
|
|
|
44
|
-
1.2.1
|
|
45
|
-
==================
|
|
61
|
+
## 1.2.1
|
|
46
62
|
|
|
47
|
-
* Fixes Rails 5 compatibility. Use duck-typing to detect request object
|
|
63
|
+
* [FIXED] Fixes Rails 5 compatibility. Use duck-typing to detect request object
|
|
48
64
|
|
|
49
|
-
1.2.0
|
|
50
|
-
==================
|
|
65
|
+
## 1.2.0
|
|
51
66
|
|
|
52
|
-
* Minor release for Native notifications
|
|
67
|
+
* [CHANGED] Minor release for Native notifications
|
|
53
68
|
|
|
54
|
-
1.2.0.rc1
|
|
55
|
-
==================
|
|
69
|
+
## 1.2.0.rc1
|
|
56
70
|
|
|
57
|
-
* Add support for Native notifications
|
|
71
|
+
* [ADDED] Add support for Native notifications
|
|
58
72
|
|
|
59
|
-
1.1.0
|
|
60
|
-
==================
|
|
73
|
+
## 1.1.0
|
|
61
74
|
|
|
62
|
-
* Add support for batch events
|
|
75
|
+
* [ADDED] Add support for batch events
|
|
63
76
|
|
|
64
|
-
1.0.0
|
|
65
|
-
==================
|
|
77
|
+
## 1.0.0
|
|
66
78
|
|
|
67
|
-
No breaking changes, this release is just to follow semver and show that we
|
|
79
|
+
* [CHANGED] No breaking changes, this release is just to follow semver and show that we
|
|
68
80
|
are stable.
|
|
69
81
|
|
|
70
|
-
0.18.0
|
|
71
|
-
==================
|
|
82
|
+
## 0.18.0
|
|
72
83
|
|
|
73
|
-
* Introduce `Pusher::Client.from_env`
|
|
74
|
-
* Improve error handling on missing config
|
|
84
|
+
* [ADDED] Introduce `Pusher::Client.from_env`
|
|
85
|
+
* [FIXED] Improve error handling on missing config
|
|
75
86
|
|
|
76
|
-
0.17.0
|
|
77
|
-
==================
|
|
87
|
+
## 0.17.0
|
|
78
88
|
|
|
79
|
-
* Introduce the `cluster` option.
|
|
89
|
+
* [ADDED] Introduce the `cluster` option.
|
|
80
90
|
|
|
81
|
-
0.16.0
|
|
82
|
-
==================
|
|
91
|
+
## 0.16.0
|
|
83
92
|
|
|
84
|
-
* Bump httpclient version to 2.7
|
|
85
|
-
* Ruby 1.8.7 is not supported anymore.
|
|
93
|
+
* [CHANGED] Bump httpclient version to 2.7
|
|
94
|
+
* [REMOVED] Ruby 1.8.7 is not supported anymore.
|
|
86
95
|
|
|
87
|
-
0.15.2
|
|
88
|
-
==================
|
|
96
|
+
## 0.15.2
|
|
89
97
|
|
|
90
|
-
* Documented `Pusher.channel_info`, `Pusher.channels`
|
|
91
|
-
* Added `Pusher.channel_users`
|
|
98
|
+
* [CHANGED] Documented `Pusher.channel_info`, `Pusher.channels`
|
|
99
|
+
* [ADDED] Added `Pusher.channel_users`
|
|
92
100
|
|
|
93
|
-
0.15.1
|
|
94
|
-
==================
|
|
101
|
+
## 0.15.1
|
|
95
102
|
|
|
96
|
-
* Fixed a bug where the `authenticate` method added in 0.15.0 wasn't exposed on the Pusher class.
|
|
103
|
+
* [FIXED] Fixed a bug where the `authenticate` method added in 0.15.0 wasn't exposed on the Pusher class.
|
|
97
104
|
|
|
98
|
-
0.15.0
|
|
99
|
-
==================
|
|
105
|
+
## 0.15.0
|
|
100
106
|
|
|
101
|
-
* Added `Pusher.authenticate` method for authenticating private and presence channels.
|
|
107
|
+
* [ADDED] Added `Pusher.authenticate` method for authenticating private and presence channels.
|
|
102
108
|
This is prefered over the older `Pusher['a_channel'].authenticate(...)` style.
|
|
103
109
|
|
|
104
|
-
0.14.6
|
|
105
|
-
==================
|
|
106
|
-
* Updated to use the `pusher-signature` gem instead of `signature`.
|
|
107
|
-
This resolves namespace related issues.
|
|
108
|
-
|
|
109
|
-
0.14.5 / 2015-05-11
|
|
110
|
-
==================
|
|
111
|
-
|
|
112
|
-
* SECURITY: Prevent auth delegation trough crafted socket IDs
|
|
110
|
+
## 0.14.6
|
|
113
111
|
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
* [CHANGED] Updated to use the `pusher-signature` gem instead of `signature`.
|
|
113
|
+
This resolves namespace related issues.
|
|
116
114
|
|
|
117
|
-
|
|
118
|
-
* SECURITY: Prevent POODLE. Disable SSLv3, update httpclient to v2.5
|
|
119
|
-
* Fix channel name character limit.
|
|
120
|
-
* Adds support for listing users on a presence channel
|
|
115
|
+
## 0.14.5
|
|
121
116
|
|
|
122
|
-
|
|
123
|
-
==================
|
|
117
|
+
* [SECURITY] Prevent auth delegation trough crafted socket IDs
|
|
124
118
|
|
|
125
|
-
|
|
119
|
+
## 0.14.4
|
|
126
120
|
|
|
127
|
-
|
|
128
|
-
|
|
121
|
+
* [SECURITY] Prevent timing attack, update signature to v0.1.8
|
|
122
|
+
* [SECURITY] Prevent POODLE. Disable SSLv3, update httpclient to v2.5
|
|
123
|
+
* [FIXED] Fix channel name character limit.
|
|
124
|
+
* [ADDED] Adds support for listing users on a presence channel
|
|
129
125
|
|
|
130
|
-
|
|
126
|
+
## 0.14.2
|
|
131
127
|
|
|
132
|
-
* Bump httpclient to v2.4. See #62 (POODLE SSL)
|
|
133
|
-
* Fix limited channel count at README.md. Thanks @tricknotes
|
|
128
|
+
* [CHANGED] Bump httpclient to v2.4. See #62 (POODLE SSL)
|
|
129
|
+
* [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/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.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
|
|
|
@@ -148,7 +137,7 @@ module Pusher
|
|
|
148
137
|
# Set an encryption_master_key to use with private-encrypted channels from
|
|
149
138
|
# a base64 encoded string.
|
|
150
139
|
def encryption_master_key_base64=(s)
|
|
151
|
-
@encryption_master_key = s ? Base64.
|
|
140
|
+
@encryption_master_key = s ? Base64.strict_decode64(s) : nil
|
|
152
141
|
end
|
|
153
142
|
|
|
154
143
|
## INTERACT WITH THE API ##
|
|
@@ -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]]
|
|
@@ -483,8 +454,8 @@ module Pusher
|
|
|
483
454
|
ciphertext = secret_box.encrypt(nonce, encoded_data)
|
|
484
455
|
|
|
485
456
|
MultiJson.encode({
|
|
486
|
-
"nonce" => Base64::
|
|
487
|
-
"ciphertext" => Base64::
|
|
457
|
+
"nonce" => Base64::strict_encode64(nonce),
|
|
458
|
+
"ciphertext" => Base64::strict_encode64(ciphertext),
|
|
488
459
|
})
|
|
489
460
|
end
|
|
490
461
|
|