webpush 1.0.0 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5fbb0e5a0419639817533b0ce1b45c0b222fafa5
4
- data.tar.gz: b3f72a12240ef2496c27aefc7a88a896fd1f2aa4
2
+ SHA256:
3
+ metadata.gz: 5477ba01938fc82903b96c38eb3663259ffb2c85c5c077acb12c39ca0bf4f595
4
+ data.tar.gz: 1574886feed49138a2de64c37ad8997b54715b890a4517d13edbd82197d4e092
5
5
  SHA512:
6
- metadata.gz: 0ef773e38114e36f2d903ffcb892ffde10e5ca837908e76df1f2c95e31da9044f80e6add328e769ec70ddd8a43dcfcaff0122298346903dda8a730962e8e7f4c
7
- data.tar.gz: 7e242909ab6e783f81a7553a193e384aa8b956537087de172838e50199d7dd37c7c78204248932b5574022c0624ef3ff7d6bc730f1e65b6f03858a993a7582e6
6
+ metadata.gz: ebe9bed5482e052ccef497c0befc0c946079d6ce99db40acfbce09b042cc8123413cd8ac8c01776a40daaea3a8e4d4575d37e611d8d55191df5351adb6a29562
7
+ data.tar.gz: 23e55f3c0d33c1f9b12cde268132e9414c804a1c00ee3dbe44fb2a84ad01852aa88b8426f578f9a77ed31f3d6649feb6bf94f013e781cab2051bd7fb35abee0d
@@ -8,6 +8,7 @@ rvm:
8
8
  - 2.4
9
9
  - 2.5
10
10
  - 2.6
11
+ - 2.7
11
12
  before_install:
12
13
  - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
13
14
  - gem install bundler -v 1.17.3
@@ -1,5 +1,21 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.0.0](https://github.com/zaru/webpush/tree/v1.0.0) (2019-08-15)
4
+
5
+ A stable version 1.0.0 has been released.
6
+
7
+ Thanks @mohamedhafez, @mplatov and @MedetaiAkaru for everything!
8
+
9
+ [Full Changelog](https://github.com/zaru/webpush/compare/v0.3.8...v1.0.0)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - switch to aes128gcm encoding [\#84](https://github.com/zaru/webpush/pull/84) ([mohamedhafez](https://github.com/mohamedhafez))
14
+ - Fixed fcm spec [\#77](https://github.com/zaru/webpush/pull/77) ([zaru](https://github.com/zaru))
15
+ - add fcm endpoints [\#76](https://github.com/zaru/webpush/pull/76) ([MedetaiAkaru](https://github.com/MedetaiAkaru))
16
+ - Add Rubocop and fix [\#74](https://github.com/zaru/webpush/pull/74) ([zaru](https://github.com/zaru))
17
+ - Fix TravisCI bundler version [\#73](https://github.com/zaru/webpush/pull/73) ([zaru](https://github.com/zaru))
18
+
3
19
  ## [v0.3.8](https://github.com/zaru/webpush/tree/v0.3.8) (2019-04-16)
4
20
  [Full Changelog](https://github.com/zaru/webpush/compare/v0.3.7...v0.3.8)
5
21
 
data/README.md CHANGED
@@ -7,7 +7,9 @@
7
7
 
8
8
  This gem makes it possible to send push messages to web browsers from Ruby backends using the [Web Push Protocol](https://tools.ietf.org/html/draft-ietf-webpush-protocol-10). It supports [Message Encryption for Web Push](https://tools.ietf.org/html/draft-ietf-webpush-encryption) to send messages securely from server to user agent.
9
9
 
10
- Payload is supported by Chrome50+, Firefox48+.
10
+ Payload is supported by Chrome 50+, Firefox 48+, Edge 79+.
11
+
12
+ [webpush Demo app here (building by Sinatra app).](https://github.com/zaru/webpush_demo_ruby)
11
13
 
12
14
  ## Installation
13
15
 
@@ -278,7 +280,7 @@ Webpush.payload_send(
278
280
  p256dh: "BO/aG9nYXNkZmFkc2ZmZHNmYWRzZmFl...",
279
281
  auth: "aW1hcmthcmFpa3V6ZQ==",
280
282
  vapid: {
281
- subject: "mailto:sender@example.com"
283
+ subject: "mailto:sender@example.com",
282
284
  public_key: ENV['VAPID_PUBLIC_KEY'],
283
285
  private_key: ENV['VAPID_PRIVATE_KEY']
284
286
  }
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'uri'
3
4
  require 'jwt'
4
5
  require 'base64'
5
6
 
@@ -20,7 +21,7 @@ module Webpush
20
21
 
21
22
  # rubocop:disable Metrics/AbcSize
22
23
  def perform
23
- http = Net::HTTP.new(uri.host, uri.port)
24
+ http = Net::HTTP.new(uri.host, uri.port, *proxy_options)
24
25
  http.use_ssl = true
25
26
  http.ssl_timeout = @options[:ssl_timeout] unless @options[:ssl_timeout].nil?
26
27
  http.open_timeout = @options[:open_timeout] unless @options[:open_timeout].nil?
@@ -28,6 +29,7 @@ module Webpush
28
29
 
29
30
  req = Net::HTTP::Post.new(uri.request_uri, headers)
30
31
  req.body = body
32
+
31
33
  resp = http.request(req)
32
34
  verify_response(resp)
33
35
 
@@ -35,6 +37,14 @@ module Webpush
35
37
  end
36
38
  # rubocop:enable Metrics/AbcSize
37
39
 
40
+ def proxy_options
41
+ return [] unless @options[:proxy]
42
+
43
+ proxy_uri = URI.parse(@options[:proxy])
44
+
45
+ [proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password]
46
+ end
47
+
38
48
  # rubocop:disable Metrics/MethodLength
39
49
  def headers
40
50
  headers = {}
@@ -131,7 +141,7 @@ module Webpush
131
141
  def build_payload(message, subscription)
132
142
  return nil if message.nil? || message.empty?
133
143
 
134
- encrypt_payload(message, subscription.fetch(:keys))
144
+ encrypt_payload(message, **subscription.fetch(:keys))
135
145
  end
136
146
 
137
147
  def encrypt_payload(message, p256dh:, auth:)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Webpush
4
- VERSION = '1.0.0'.freeze
4
+ VERSION = '1.1.0'.freeze
5
5
  end
@@ -15,14 +15,16 @@ Gem::Specification.new do |spec|
15
15
  spec.bindir = 'exe'
16
16
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
17
  spec.require_paths = ['lib']
18
+
19
+ spec.required_ruby_version = '>= 2.2'
18
20
 
19
21
  spec.add_dependency 'hkdf', '~> 0.2'
20
22
  spec.add_dependency 'jwt', '~> 2.0'
21
23
 
22
- spec.add_development_dependency 'bundler', '~> 1.17.3'
24
+ spec.add_development_dependency 'bundler', '>= 1.17.3'
23
25
  spec.add_development_dependency 'pry'
24
- spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'rake', '>= 10.0'
25
27
  spec.add_development_dependency 'rspec', '~> 3.0'
26
28
  spec.add_development_dependency 'simplecov'
27
- spec.add_development_dependency 'webmock', '~> 1.24'
29
+ spec.add_development_dependency 'webmock', '~> 3.0'
28
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webpush
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zaru@sakuraba
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-15 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hkdf
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.17.3
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.17.3
55
55
  - !ruby/object:Gem::Dependency
@@ -70,14 +70,14 @@ dependencies:
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '10.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '10.0'
83
83
  - !ruby/object:Gem::Dependency
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.24'
117
+ version: '3.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.24'
124
+ version: '3.0'
125
125
  description:
126
126
  email:
127
127
  - zarutofu@gmail.com
@@ -162,15 +162,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - ">="
164
164
  - !ruby/object:Gem::Version
165
- version: '0'
165
+ version: '2.2'
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  requirements:
168
168
  - - ">="
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  requirements: []
172
- rubyforge_project:
173
- rubygems_version: 2.5.2
172
+ rubygems_version: 3.1.2
174
173
  signing_key:
175
174
  specification_version: 4
176
175
  summary: Encryption Utilities for Web Push payload.