pusher 1.4.3 → 2.0.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 +4 -4
- data/CHANGELOG.md +82 -88
- data/README.md +8 -7
- data/lib/pusher/client.rb +43 -72
- 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: 71dc5eb4f9d389dce37f6ec8c1f78390402b31bd94edcb6f22094c70edeb2d72
|
|
4
|
+
data.tar.gz: 3b2d0db0ffe052cbd8c71b252ced1d5910ece64a08100a92c0f17b5ac9b6fa8a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2f644cc58f1b8accd8785eeffc3fc74bad4c20677032455d96e655944ee0818f99802ed339a3f5f9049acd57ea1166817f6c01feba926c9b61256260239c6354
|
|
7
|
+
data.tar.gz: c0d4edd095918225bea29707df4e8e0364b16218c367b40f72c5541fe98232e4698e83e58ea8260b7caeeea54d314ec343ea25050f1f7847747d01a003c68221
|
data/CHANGELOG.md
CHANGED
|
@@ -1,139 +1,133 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2.0.3
|
|
4
|
+
|
|
5
|
+
* [FIXED] Corrected the channels limit when publishing events. Upped from 10 to 100.
|
|
6
|
+
|
|
7
|
+
## 2.0.2
|
|
8
|
+
|
|
9
|
+
* [CHANGED] made encryption_master_key_base64 globally configurable
|
|
10
|
+
|
|
11
|
+
## 2.0.1
|
|
12
|
+
|
|
13
|
+
* [CHANGED] Only include lib and essential docs in gem.
|
|
14
|
+
|
|
15
|
+
## 2.0.0
|
|
16
|
+
|
|
17
|
+
* [CHANGED] Use TLS by default.
|
|
18
|
+
* [REMOVED] Support for Ruby 2.4 and 2.5.
|
|
19
|
+
* [FIXED] Handle empty or nil configuration.
|
|
20
|
+
* [REMOVED] Legacy Push Notification integration.
|
|
21
|
+
* [ADDED] Stalebot and Github actions.
|
|
3
22
|
|
|
4
|
-
|
|
23
|
+
## 1.4.3
|
|
24
|
+
|
|
25
|
+
* [FIXED] Remove newline from end of base64 encoded strings, some decoders don't like
|
|
5
26
|
them.
|
|
6
27
|
|
|
7
|
-
1.4.2
|
|
28
|
+
## 1.4.2
|
|
8
29
|
==================
|
|
9
30
|
|
|
10
|
-
* Return `shared_secret` to support authenticating encrypted channels. Thanks
|
|
31
|
+
* [FIXED] Return `shared_secret` to support authenticating encrypted channels. Thanks
|
|
11
32
|
@Benjaminpjacobs
|
|
12
33
|
|
|
13
|
-
1.4.1
|
|
14
|
-
==================
|
|
34
|
+
## 1.4.1
|
|
15
35
|
|
|
16
|
-
* Remove rbnacl from dependencies so we don't get errors when it isn't
|
|
36
|
+
* [CHANGED] Remove rbnacl from dependencies so we don't get errors when it isn't
|
|
17
37
|
required. Thanks @y-yagi!
|
|
18
38
|
|
|
19
|
-
1.4.0
|
|
20
|
-
==================
|
|
39
|
+
## 1.4.0
|
|
21
40
|
|
|
22
|
-
* Support for end-to-end encryption.
|
|
41
|
+
* [ADDED] Support for end-to-end encryption.
|
|
23
42
|
|
|
24
|
-
1.3.3
|
|
25
|
-
==================
|
|
43
|
+
## 1.3.3
|
|
26
44
|
|
|
27
|
-
* Rewording to clarify "Pusher Channels" or simply "Channels" product name.
|
|
45
|
+
* [CHANGED] Rewording to clarify "Pusher Channels" or simply "Channels" product name.
|
|
28
46
|
|
|
29
|
-
1.3.2
|
|
30
|
-
==================
|
|
47
|
+
## 1.3.2
|
|
31
48
|
|
|
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.
|
|
49
|
+
* [FIXED] Return a specific error for "Request Entity Too Large" (body over 10KB).
|
|
50
|
+
* [ADDED] Add a `use_tls` option for SSL (defaults to false).
|
|
51
|
+
* [ADDED] Add a `from_url` client method (in addition to existing `from_env` option).
|
|
52
|
+
* [CHANGED] Improved documentation and fixed typos.
|
|
53
|
+
* [ADDED] Add Ruby 2.4 to test matrix.
|
|
37
54
|
|
|
38
|
-
1.3.1
|
|
39
|
-
==================
|
|
55
|
+
## 1.3.1
|
|
40
56
|
|
|
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.
|
|
57
|
+
* [FIXED] Added missing client batch methods to default client delegations
|
|
58
|
+
* [CHANGED] Document raised exception in the `authenticate` method
|
|
59
|
+
* [FIXED] Fixes em-http-request from using v2.5.0 of `addressable` breaking builds.
|
|
44
60
|
|
|
45
|
-
1.3.0
|
|
46
|
-
==================
|
|
61
|
+
## 1.3.0
|
|
47
62
|
|
|
48
|
-
* Add support for sending push notifications on up to 10 interests.
|
|
63
|
+
* [ADDED] Add support for sending push notifications on up to 10 interests.
|
|
49
64
|
|
|
50
|
-
1.2.1
|
|
51
|
-
==================
|
|
65
|
+
## 1.2.1
|
|
52
66
|
|
|
53
|
-
* Fixes Rails 5 compatibility. Use duck-typing to detect request object
|
|
67
|
+
* [FIXED] Fixes Rails 5 compatibility. Use duck-typing to detect request object
|
|
54
68
|
|
|
55
|
-
1.2.0
|
|
56
|
-
==================
|
|
69
|
+
## 1.2.0
|
|
57
70
|
|
|
58
|
-
* Minor release for Native notifications
|
|
71
|
+
* [CHANGED] Minor release for Native notifications
|
|
59
72
|
|
|
60
|
-
1.2.0.rc1
|
|
61
|
-
==================
|
|
73
|
+
## 1.2.0.rc1
|
|
62
74
|
|
|
63
|
-
* Add support for Native notifications
|
|
75
|
+
* [ADDED] Add support for Native notifications
|
|
64
76
|
|
|
65
|
-
1.1.0
|
|
66
|
-
==================
|
|
77
|
+
## 1.1.0
|
|
67
78
|
|
|
68
|
-
* Add support for batch events
|
|
79
|
+
* [ADDED] Add support for batch events
|
|
69
80
|
|
|
70
|
-
1.0.0
|
|
71
|
-
==================
|
|
81
|
+
## 1.0.0
|
|
72
82
|
|
|
73
|
-
No breaking changes, this release is just to follow semver and show that we
|
|
83
|
+
* [CHANGED] No breaking changes, this release is just to follow semver and show that we
|
|
74
84
|
are stable.
|
|
75
85
|
|
|
76
|
-
0.18.0
|
|
77
|
-
==================
|
|
86
|
+
## 0.18.0
|
|
78
87
|
|
|
79
|
-
* Introduce `Pusher::Client.from_env`
|
|
80
|
-
* Improve error handling on missing config
|
|
88
|
+
* [ADDED] Introduce `Pusher::Client.from_env`
|
|
89
|
+
* [FIXED] Improve error handling on missing config
|
|
81
90
|
|
|
82
|
-
0.17.0
|
|
83
|
-
==================
|
|
91
|
+
## 0.17.0
|
|
84
92
|
|
|
85
|
-
* Introduce the `cluster` option.
|
|
93
|
+
* [ADDED] Introduce the `cluster` option.
|
|
86
94
|
|
|
87
|
-
0.16.0
|
|
88
|
-
==================
|
|
95
|
+
## 0.16.0
|
|
89
96
|
|
|
90
|
-
* Bump httpclient version to 2.7
|
|
91
|
-
* Ruby 1.8.7 is not supported anymore.
|
|
97
|
+
* [CHANGED] Bump httpclient version to 2.7
|
|
98
|
+
* [REMOVED] Ruby 1.8.7 is not supported anymore.
|
|
92
99
|
|
|
93
|
-
0.15.2
|
|
94
|
-
==================
|
|
100
|
+
## 0.15.2
|
|
95
101
|
|
|
96
|
-
* Documented `Pusher.channel_info`, `Pusher.channels`
|
|
97
|
-
* Added `Pusher.channel_users`
|
|
102
|
+
* [CHANGED] Documented `Pusher.channel_info`, `Pusher.channels`
|
|
103
|
+
* [ADDED] Added `Pusher.channel_users`
|
|
98
104
|
|
|
99
|
-
0.15.1
|
|
100
|
-
==================
|
|
105
|
+
## 0.15.1
|
|
101
106
|
|
|
102
|
-
* Fixed a bug where the `authenticate` method added in 0.15.0 wasn't exposed on the Pusher class.
|
|
107
|
+
* [FIXED] Fixed a bug where the `authenticate` method added in 0.15.0 wasn't exposed on the Pusher class.
|
|
103
108
|
|
|
104
|
-
0.15.0
|
|
105
|
-
==================
|
|
109
|
+
## 0.15.0
|
|
106
110
|
|
|
107
|
-
* Added `Pusher.authenticate` method for authenticating private and presence channels.
|
|
111
|
+
* [ADDED] Added `Pusher.authenticate` method for authenticating private and presence channels.
|
|
108
112
|
This is prefered over the older `Pusher['a_channel'].authenticate(...)` style.
|
|
109
113
|
|
|
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
|
|
114
|
+
## 0.14.6
|
|
119
115
|
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
* [CHANGED] Updated to use the `pusher-signature` gem instead of `signature`.
|
|
117
|
+
This resolves namespace related issues.
|
|
122
118
|
|
|
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
|
|
119
|
+
## 0.14.5
|
|
127
120
|
|
|
128
|
-
|
|
129
|
-
==================
|
|
121
|
+
* [SECURITY] Prevent auth delegation trough crafted socket IDs
|
|
130
122
|
|
|
131
|
-
|
|
123
|
+
## 0.14.4
|
|
132
124
|
|
|
133
|
-
|
|
134
|
-
|
|
125
|
+
* [SECURITY] Prevent timing attack, update signature to v0.1.8
|
|
126
|
+
* [SECURITY] Prevent POODLE. Disable SSLv3, update httpclient to v2.5
|
|
127
|
+
* [FIXED] Fix channel name character limit.
|
|
128
|
+
* [ADDED] Adds support for listing users on a presence channel
|
|
135
129
|
|
|
136
|
-
|
|
130
|
+
## 0.14.2
|
|
137
131
|
|
|
138
|
-
* Bump httpclient to v2.4. See #62 (POODLE SSL)
|
|
139
|
-
* Fix limited channel count at README.md. Thanks @tricknotes
|
|
132
|
+
* [CHANGED] Bump httpclient to v2.4. See #62 (POODLE SSL)
|
|
133
|
+
* [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.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]]
|
|
@@ -430,7 +401,7 @@ module Pusher
|
|
|
430
401
|
|
|
431
402
|
def trigger_params(channels, event_name, data, params)
|
|
432
403
|
channels = Array(channels).map(&:to_s)
|
|
433
|
-
raise Pusher::Error, "Too many channels (#{channels.length}), max
|
|
404
|
+
raise Pusher::Error, "Too many channels (#{channels.length}), max 100" if channels.length > 100
|
|
434
405
|
|
|
435
406
|
encoded_data = if channels.any?{ |c| c.match(/^private-encrypted-/) } then
|
|
436
407
|
raise Pusher::Error, "Cannot trigger to multiple channels if any are encrypted" if channels.length > 1
|
data/lib/pusher/version.rb
CHANGED
data/lib/pusher.rb
CHANGED
|
@@ -27,10 +27,10 @@ module Pusher
|
|
|
27
27
|
class << self
|
|
28
28
|
extend Forwardable
|
|
29
29
|
|
|
30
|
-
def_delegators :default_client, :scheme, :host, :port, :app_id, :key,
|
|
31
|
-
|
|
32
|
-
def_delegators :default_client, :scheme=, :host=, :port=, :app_id=, :key=,
|
|
33
|
-
|
|
30
|
+
def_delegators :default_client, :scheme, :host, :port, :app_id, :key,
|
|
31
|
+
:secret, :http_proxy, :encryption_master_key_base64
|
|
32
|
+
def_delegators :default_client, :scheme=, :host=, :port=, :app_id=, :key=,
|
|
33
|
+
:secret=, :http_proxy=, :encryption_master_key_base64=
|
|
34
34
|
|
|
35
35
|
def_delegators :default_client, :authentication_token, :url, :cluster
|
|
36
36
|
def_delegators :default_client, :encrypted=, :url=, :cluster=
|
|
@@ -66,4 +66,3 @@ require 'pusher/channel'
|
|
|
66
66
|
require 'pusher/request'
|
|
67
67
|
require 'pusher/resource'
|
|
68
68
|
require 'pusher/webhook'
|
|
69
|
-
require 'pusher/native_notification/client'
|
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:
|
|
4
|
+
version: 2.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pusher
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-08-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: multi_json
|
|
@@ -171,32 +171,16 @@ executables: []
|
|
|
171
171
|
extensions: []
|
|
172
172
|
extra_rdoc_files: []
|
|
173
173
|
files:
|
|
174
|
-
- ".document"
|
|
175
|
-
- ".gemtest"
|
|
176
|
-
- ".github/stale.yml"
|
|
177
|
-
- ".gitignore"
|
|
178
|
-
- ".travis.yml"
|
|
179
174
|
- CHANGELOG.md
|
|
180
|
-
- Gemfile
|
|
181
175
|
- LICENSE
|
|
182
176
|
- README.md
|
|
183
|
-
- Rakefile
|
|
184
|
-
- examples/async_message.rb
|
|
185
|
-
- examples/presence_channels/presence_channels.rb
|
|
186
|
-
- examples/presence_channels/public/presence_channels.html
|
|
187
177
|
- lib/pusher.rb
|
|
188
178
|
- lib/pusher/channel.rb
|
|
189
179
|
- lib/pusher/client.rb
|
|
190
|
-
- lib/pusher/native_notification/client.rb
|
|
191
180
|
- lib/pusher/request.rb
|
|
192
181
|
- lib/pusher/resource.rb
|
|
193
182
|
- lib/pusher/version.rb
|
|
194
183
|
- lib/pusher/webhook.rb
|
|
195
|
-
- pusher.gemspec
|
|
196
|
-
- spec/channel_spec.rb
|
|
197
|
-
- spec/client_spec.rb
|
|
198
|
-
- spec/spec_helper.rb
|
|
199
|
-
- spec/web_hook_spec.rb
|
|
200
184
|
homepage: http://github.com/pusher/pusher-http-ruby
|
|
201
185
|
licenses:
|
|
202
186
|
- MIT
|
|
@@ -209,7 +193,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
209
193
|
requirements:
|
|
210
194
|
- - ">="
|
|
211
195
|
- !ruby/object:Gem::Version
|
|
212
|
-
version: '
|
|
196
|
+
version: '2.6'
|
|
213
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
198
|
requirements:
|
|
215
199
|
- - ">="
|
|
@@ -220,8 +204,4 @@ rubygems_version: 3.1.2
|
|
|
220
204
|
signing_key:
|
|
221
205
|
specification_version: 4
|
|
222
206
|
summary: Pusher Channels API client
|
|
223
|
-
test_files:
|
|
224
|
-
- spec/channel_spec.rb
|
|
225
|
-
- spec/client_spec.rb
|
|
226
|
-
- spec/spec_helper.rb
|
|
227
|
-
- spec/web_hook_spec.rb
|
|
207
|
+
test_files: []
|
data/.document
DELETED
data/.gemtest
DELETED
|
File without changes
|
data/.github/stale.yml
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Configuration for probot-stale - https://github.com/probot/stale
|
|
2
|
-
|
|
3
|
-
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
|
4
|
-
daysUntilStale: 365
|
|
5
|
-
|
|
6
|
-
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
|
|
7
|
-
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
|
8
|
-
daysUntilClose: 7
|
|
9
|
-
|
|
10
|
-
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
|
|
11
|
-
onlyLabels: []
|
|
12
|
-
|
|
13
|
-
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
|
14
|
-
exemptLabels:
|
|
15
|
-
- pinned
|
|
16
|
-
- security
|
|
17
|
-
|
|
18
|
-
# Set to true to ignore issues with an assignee (defaults to false)
|
|
19
|
-
exemptAssignees: true
|
|
20
|
-
|
|
21
|
-
# Comment to post when marking as stale. Set to `false` to disable
|
|
22
|
-
markComment: >
|
|
23
|
-
This issue has been automatically marked as stale because it has not had
|
|
24
|
-
recent activity. It will be closed if no further activity occurs. If you'd
|
|
25
|
-
like this issue to stay open please leave a comment indicating how this issue
|
|
26
|
-
is affecting you. Thankyou.
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED