webpush 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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.