pusher-push-notifications 1.3.0 → 2.0.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
2
  SHA256:
3
- metadata.gz: 0c2390e1a4a59aac3d17169ef09419fee58805d3d2f3679d07b93f3079f8b98f
4
- data.tar.gz: 718bd77ac234dedc626dcb4c21f7a9e445a22e0c4c15279f22b3a7ada844e369
3
+ metadata.gz: 30b4e2f22bdd9f95ca9c3b8e436a6593555756f2cd38937fedc3694873dd59e6
4
+ data.tar.gz: 4828505ed28d2d7104c616ad64b4a26bed4630e723681d013bef102a960029e6
5
5
  SHA512:
6
- metadata.gz: 05b38f814043989418b15f64cd51c4181a9f9baf7f19cb7110fc5cd511056e03eedcce1366612a9dda477cfcdb82bba50af03ab757c69f90269ae883d4bf1807
7
- data.tar.gz: '08631394abc01bcd223e371bc81ae939ae23ce97f0fb621a1cb6d41dca9779f4c9e91e4639a3b9493bc3ee0eb81de53f2a8a7552ea21bda5e4f3826eaf578cd5'
6
+ metadata.gz: 20cc5786f0d326c6b2c87542a7410f68988d9c90b79099305b59946e610777d0c99e09c020922986e5b62a160038556e00dd3c79cc5428762880a63e40877d4f
7
+ data.tar.gz: 6c0b2c93006323f152d0ee61ec6002f548e54bbe6d9a6a70a36c1ae54fadf943974c81243567b56dbde6a6941523206eafbbc3f3aad49fa2721fab50420ae110
data/.github/stale.yml ADDED
@@ -0,0 +1,26 @@
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: 90
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. Thank you.
@@ -0,0 +1,35 @@
1
+ name: Github Release
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+
7
+ jobs:
8
+ create-release:
9
+ name: Create Release
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout code
13
+ uses: actions/checkout@v2
14
+ - name: Setup git
15
+ run: |
16
+ git config user.email "pusher-ci@pusher.com"
17
+ git config user.name "Pusher CI"
18
+ - name: Prepare description
19
+ run: |
20
+ csplit -s CHANGELOG.md "/##/" {1}
21
+ cat xx01 > CHANGELOG.tmp
22
+ - name: Prepare tag
23
+ run: |
24
+ export TAG=$(head -1 CHANGELOG.tmp | cut -d' ' -f2)
25
+ echo "TAG=$TAG" >> $GITHUB_ENV
26
+ - name: Create Release
27
+ uses: actions/create-release@v1
28
+ env:
29
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
+ with:
31
+ tag_name: ${{ env.TAG }}
32
+ release_name: ${{ env.TAG }}
33
+ body_path: CHANGELOG.tmp
34
+ draft: false
35
+ prerelease: false
@@ -0,0 +1,17 @@
1
+ name: RubyGems release
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v1
13
+
14
+ - name: Publish gem
15
+ uses: dawidd6/action-publish-gem@v1
16
+ with:
17
+ api_key: ${{secrets.RUBYGEMS_API_KEY}}
@@ -0,0 +1,71 @@
1
+ name: Release
2
+
3
+ on:
4
+ pull_request:
5
+ types: [ labeled ]
6
+ branches:
7
+ - master
8
+
9
+ jobs:
10
+ prepare-release:
11
+ name: Prepare release
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Set major release
16
+ if: ${{ github.event.label.name == 'release-major' }}
17
+ run: echo "RELEASE=major" >> $GITHUB_ENV
18
+ - name: Set minor release
19
+ if: ${{ github.event.label.name == 'release-minor' }}
20
+ run: echo "RELEASE=minor" >> $GITHUB_ENV
21
+ - name: Set patch release
22
+ if: ${{ github.event.label.name == 'release-patch' }}
23
+ run: echo "RELEASE=patch" >> $GITHUB_ENV
24
+ - name: Check release env
25
+ run: |
26
+ if [[ -z "${{ env.RELEASE }}" ]];
27
+ then
28
+ echo "You need to set a release label on PRs to the main branch"
29
+ exit 1
30
+ else
31
+ exit 0
32
+ fi
33
+ - name: Install semver-tool
34
+ run: |
35
+ export DIR=$(mktemp -d)
36
+ cd $DIR
37
+ curl https://github.com/fsaintjacques/semver-tool/archive/3.2.0.tar.gz -L -o semver.tar.gz
38
+ tar -xvf semver.tar.gz
39
+ sudo cp semver-tool-3.2.0/src/semver /usr/local/bin
40
+ - name: Bump version
41
+ run: |
42
+ export CURRENT=$(gem info pusher-push-notifications --remote --exact | grep -o "pusher-push-notifications ([0-9]*\.[0-9]*\.[0-9]*)" | awk -F '[()]' '{print $2}')
43
+ export NEW_VERSION=$(semver bump ${{ env.RELEASE }} $CURRENT)
44
+ echo "VERSION=$NEW_VERSION" >> $GITHUB_ENV
45
+ - name: Checkout code
46
+ uses: actions/checkout@v2
47
+ - name: Setup git
48
+ run: |
49
+ git config user.email "pusher-ci@pusher.com"
50
+ git config user.name "Pusher CI"
51
+ git fetch
52
+ git checkout ${{ github.event.pull_request.head.ref }}
53
+ - name: Prepare CHANGELOG
54
+ run: |
55
+ echo "${{ github.event.pull_request.body }}" | csplit -s - "/##/"
56
+ echo "# Changelog
57
+
58
+ ## ${{ env.VERSION }}
59
+ " >> CHANGELOG.tmp
60
+ grep "^*" xx01 >> CHANGELOG.tmp
61
+ grep -v "^# " CHANGELOG.md >> CHANGELOG.tmp
62
+ cp CHANGELOG.tmp CHANGELOG.md
63
+ - name: Prepare version.rb
64
+ run: |
65
+ sed -i "s|VERSION = '[^']*'|VERSION = '${{ env.VERSION }}'|" lib/pusher/push_notifications/version.rb
66
+ - name: Commit changes
67
+ run: |
68
+ git add CHANGELOG.md lib/pusher/push_notifications/version.rb
69
+ git commit -m "Bump to version ${{ env.VERSION }}"
70
+ - name: Push
71
+ run: git push
@@ -0,0 +1,31 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ ruby-version: ['2.6', '2.7', '3.0']
16
+
17
+ env:
18
+ PUSHER_INSTANCE_ID: 1b880590-6301-4bb5-b34f-45db1c5f5644
19
+ PUSHER_SECRET_KEY: abc
20
+
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+ - name: Set up Ruby
24
+ uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby-version }}
27
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+ - name: Run tests
29
+ run: bundle exec rake
30
+ - name: Run rubocop
31
+ run: bundle exec rubocop
data/CHANGELOG.md CHANGED
@@ -1,36 +1,27 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project will be documented in this file.
3
+ ## 2.0.0
4
4
 
5
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
5
+ * [ADDED] Support for Ruby 3.0.
6
+ * [REMOVED] Support for Ruby 2.5 and below.
7
+ * [CHANGED] Refactor tests to avoid caze dependency.
7
8
 
8
- ## [Unreleased](https://github.com/pusher/push-notifications-ruby/compare/v1.3.0...HEAD)
9
+ ## 1.3.0
9
10
 
10
- ## [1.3.0](https://github.com/pusher/push-notifications-ruby/compare/v1.2.1...v1.3.0) - 2020-07-01
11
+ * [ADDED] Support for multiple instances of Beams clients to exist for more advanced use cases.
11
12
 
12
- Added
13
+ ## 1.2.1
13
14
 
14
- Support for multiple instances of Beams clients to exist for more advanced use cases.
15
+ * [FIXED] Endpoint also allows the scheme to be configured to enable for local development.
15
16
 
16
- ## [1.2.1](https://github.com/pusher/push-notifications-ruby/compare/v1.2.0...v1.2.1) - 2020-06-26
17
+ ## 1.2.0
17
18
 
18
- Fixed
19
+ * [ADDED] Support for "endpoint" overrides to allow for internal integration testing.
19
20
 
20
- Endpoint also allows the scheme to be configured to enable for local development.
21
+ ## 1.1.0
21
22
 
22
- ## [1.2.0](https://github.com/pusher/push-notifications-ruby/compare/v1.1.0...v1.2.0) - 2020-06-25
23
+ * [ADDED] Support for "Authenticated Users" feature: publishToUsers, generateToken and deleteUser.
23
24
 
24
- Added
25
+ ## 1.0.0
25
26
 
26
- Support for "endpoint" overrides to allow for internal integration testing.
27
-
28
- ## [1.1.0](https://github.com/pusher/push-notifications-ruby/compare/v1.0.0...v1.1.0) - 2019-02-22
29
-
30
- Added
31
-
32
- Support for "Authenticated Users" feature: publishToUsers, generateToken and deleteUser.
33
-
34
- ## [1.0.0](https://github.com/pusher/push-notifications-ruby/compare/v0.3.0...v1.0.0) - 2018-07-31
35
-
36
- - General availability (GA) release.
27
+ * [ADDED] General availability (GA) release.
data/Gemfile.lock CHANGED
@@ -2,130 +2,120 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  pusher-push-notifications (1.3.0)
5
- caze (~> 0)
6
5
  jwt (~> 2.1, >= 2.1.0)
7
6
  rest-client (~> 2.0, >= 2.0.2)
8
7
 
9
8
  GEM
10
9
  remote: https://rubygems.org/
11
10
  specs:
12
- activesupport (5.2.2)
13
- concurrent-ruby (~> 1.0, >= 1.0.2)
14
- i18n (>= 0.7, < 2)
15
- minitest (~> 5.1)
16
- tzinfo (~> 1.1)
17
- addressable (2.5.2)
18
- public_suffix (>= 2.0.2, < 4.0)
19
- ast (2.3.0)
20
- byebug (10.0.2)
21
- caze (0.2.2)
22
- activesupport (>= 3)
23
- codecov (0.1.10)
24
- json
25
- simplecov
26
- url
27
- coderay (1.1.2)
28
- concurrent-ruby (1.1.4)
29
- coveralls (0.8.21)
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
13
+ ast (2.4.2)
14
+ byebug (11.1.3)
15
+ codecov (0.5.1)
16
+ simplecov (>= 0.15, < 0.22)
17
+ coderay (1.1.3)
18
+ coveralls (0.8.23)
30
19
  json (>= 1.8, < 3)
31
- simplecov (~> 0.14.1)
20
+ simplecov (~> 0.16.1)
32
21
  term-ansicolor (~> 1.3)
33
- thor (~> 0.19.4)
22
+ thor (>= 0.19.4, < 2.0)
34
23
  tins (~> 1.6)
35
- crack (0.4.3)
36
- safe_yaml (~> 1.0.0)
37
- diff-lcs (1.3)
38
- docile (1.1.5)
39
- domain_name (0.5.20180417)
24
+ crack (0.4.5)
25
+ rexml
26
+ diff-lcs (1.4.4)
27
+ docile (1.3.5)
28
+ domain_name (0.5.20190701)
40
29
  unf (>= 0.0.5, < 1.0.0)
41
- dotenv (2.2.1)
42
- hashdiff (0.3.7)
30
+ dotenv (2.7.6)
31
+ hashdiff (1.0.1)
32
+ http-accept (1.7.0)
43
33
  http-cookie (1.0.3)
44
34
  domain_name (~> 0.5)
45
- i18n (1.5.3)
46
- concurrent-ruby (~> 1.0)
47
- json (2.1.0)
48
- jwt (2.1.0)
49
- method_source (0.9.2)
50
- mime-types (3.2.2)
35
+ json (2.5.1)
36
+ jwt (2.2.2)
37
+ method_source (1.0.0)
38
+ mime-types (3.3.1)
51
39
  mime-types-data (~> 3.2015)
52
- mime-types-data (3.2018.0812)
53
- minitest (5.11.3)
40
+ mime-types-data (3.2021.0225)
54
41
  netrc (0.11.0)
55
- parallel (1.12.1)
56
- parser (2.4.0.2)
57
- ast (~> 2.3)
58
- powerpack (0.1.1)
59
- pry (0.12.2)
60
- coderay (~> 1.1.0)
61
- method_source (~> 0.9.0)
62
- pry-byebug (3.6.0)
63
- byebug (~> 10.0)
64
- pry (~> 0.10)
65
- public_suffix (3.0.1)
42
+ parallel (1.20.1)
43
+ parser (3.0.0.0)
44
+ ast (~> 2.4.1)
45
+ pry (0.13.1)
46
+ coderay (~> 1.1)
47
+ method_source (~> 1.0)
48
+ pry-byebug (3.9.0)
49
+ byebug (~> 11.0)
50
+ pry (~> 0.13.0)
51
+ public_suffix (4.0.6)
66
52
  rainbow (3.0.0)
67
- rake (10.5.0)
53
+ rake (13.0.3)
68
54
  rb-readline (0.5.5)
69
- rest-client (2.0.2)
55
+ regexp_parser (2.1.1)
56
+ rest-client (2.1.0)
57
+ http-accept (>= 1.7.0, < 2.0)
70
58
  http-cookie (>= 1.0.2, < 2.0)
71
59
  mime-types (>= 1.16, < 4.0)
72
60
  netrc (~> 0.8)
73
- rspec (3.7.0)
74
- rspec-core (~> 3.7.0)
75
- rspec-expectations (~> 3.7.0)
76
- rspec-mocks (~> 3.7.0)
77
- rspec-core (3.7.0)
78
- rspec-support (~> 3.7.0)
79
- rspec-expectations (3.7.0)
61
+ rexml (3.2.4)
62
+ rspec (3.10.0)
63
+ rspec-core (~> 3.10.0)
64
+ rspec-expectations (~> 3.10.0)
65
+ rspec-mocks (~> 3.10.0)
66
+ rspec-core (3.10.1)
67
+ rspec-support (~> 3.10.0)
68
+ rspec-expectations (3.10.1)
80
69
  diff-lcs (>= 1.2.0, < 2.0)
81
- rspec-support (~> 3.7.0)
82
- rspec-mocks (3.7.0)
70
+ rspec-support (~> 3.10.0)
71
+ rspec-mocks (3.10.2)
83
72
  diff-lcs (>= 1.2.0, < 2.0)
84
- rspec-support (~> 3.7.0)
85
- rspec-support (3.7.0)
86
- rubocop (0.52.0)
73
+ rspec-support (~> 3.10.0)
74
+ rspec-support (3.10.2)
75
+ rubocop (1.11.0)
87
76
  parallel (~> 1.10)
88
- parser (>= 2.4.0.2, < 3.0)
89
- powerpack (~> 0.1)
77
+ parser (>= 3.0.0.0)
90
78
  rainbow (>= 2.2.2, < 4.0)
79
+ regexp_parser (>= 1.8, < 3.0)
80
+ rexml
81
+ rubocop-ast (>= 1.2.0, < 2.0)
91
82
  ruby-progressbar (~> 1.7)
92
- unicode-display_width (~> 1.0, >= 1.0.1)
93
- ruby-progressbar (1.9.0)
94
- safe_yaml (1.0.4)
95
- simplecov (0.14.1)
96
- docile (~> 1.1.0)
83
+ unicode-display_width (>= 1.4.0, < 3.0)
84
+ rubocop-ast (1.4.1)
85
+ parser (>= 2.7.1.5)
86
+ ruby-progressbar (1.11.0)
87
+ simplecov (0.16.1)
88
+ docile (~> 1.1)
97
89
  json (>= 1.8, < 3)
98
90
  simplecov-html (~> 0.10.0)
99
91
  simplecov-html (0.10.2)
100
- term-ansicolor (1.6.0)
92
+ sync (0.5.0)
93
+ term-ansicolor (1.7.1)
101
94
  tins (~> 1.0)
102
- thor (0.19.4)
103
- thread_safe (0.3.6)
104
- tins (1.16.3)
105
- tzinfo (1.2.5)
106
- thread_safe (~> 0.1)
95
+ thor (1.1.0)
96
+ tins (1.28.0)
97
+ sync
107
98
  unf (0.1.4)
108
99
  unf_ext
109
- unf_ext (0.0.7.5)
110
- unicode-display_width (1.3.0)
111
- url (0.3.2)
100
+ unf_ext (0.0.7.7)
101
+ unicode-display_width (2.0.0)
112
102
  vcr (3.0.3)
113
- webmock (3.1.1)
103
+ webmock (3.12.0)
114
104
  addressable (>= 2.3.6)
115
105
  crack (>= 0.3.2)
116
- hashdiff
106
+ hashdiff (>= 0.4.0, < 2.0.0)
117
107
 
118
108
  PLATFORMS
119
109
  ruby
120
110
 
121
111
  DEPENDENCIES
122
- bundler (~> 1.16)
112
+ bundler (~> 2.2)
123
113
  codecov (~> 0)
124
114
  coveralls (~> 0.8.21)
125
115
  dotenv (~> 2.2, >= 2.2.1)
126
116
  pry-byebug (~> 3.6, >= 3.6.0)
127
117
  pusher-push-notifications!
128
- rake (~> 10.0)
118
+ rake (~> 13.0)
129
119
  rb-readline (~> 0)
130
120
  rspec (~> 3.0)
131
121
  rubocop (>= 0.49.0)
@@ -133,4 +123,4 @@ DEPENDENCIES
133
123
  webmock (~> 3.0, >= 3.0.1)
134
124
 
135
125
  BUNDLED WITH
136
- 1.16.2
126
+ 2.2.13
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'caze'
4
-
5
3
  require_relative './push_notifications/client'
6
4
  require_relative './push_notifications/use_cases/publish'
7
5
  require_relative './push_notifications/use_cases/publish_to_users'
@@ -13,19 +11,18 @@ require_relative './push_notifications/token'
13
11
 
14
12
  module Pusher
15
13
  module PushNotifications
16
- include Caze
17
-
18
14
  class PushError < RuntimeError; end
19
15
 
20
- has_use_case :publish, UseCases::Publish
21
- has_use_case :publish_to_interests, UseCases::Publish
22
- has_use_case :publish_to_users, UseCases::PublishToUsers
23
- has_use_case :delete_user, UseCases::DeleteUser
24
- has_use_case :generate_token, UseCases::GenerateToken
25
-
26
16
  class << self
17
+ extend Forwardable
18
+
27
19
  attr_reader :instance_id, :secret_key
28
20
 
21
+ def_delegators UseCases::Publish, :publish, :publish_to_interests
22
+ def_delegators UseCases::PublishToUsers, :publish_to_users
23
+ def_delegators UseCases::DeleteUser, :delete_user
24
+ def_delegators UseCases::GenerateToken, :generate_token
25
+
29
26
  def configure
30
27
  yield(self)
31
28
  # returning a duplicate of `self` to allow multiple clients to be
@@ -34,23 +31,19 @@ module Pusher
34
31
  end
35
32
 
36
33
  def instance_id=(instance_id)
37
- if instance_id.nil? || instance_id.delete(' ').empty?
38
- raise PushError, 'Invalid instance id'
39
- end
34
+ raise PushError, 'Invalid instance id' if instance_id.nil? || instance_id.delete(' ').empty?
35
+
40
36
  @instance_id = instance_id
41
37
  end
42
38
 
43
39
  def secret_key=(secret_key)
44
- if secret_key.nil? || secret_key.delete(' ').empty?
45
- raise PushError, 'Invalid secret key'
46
- end
40
+ raise PushError, 'Invalid secret key' if secret_key.nil? || secret_key.delete(' ').empty?
41
+
47
42
  @secret_key = secret_key
48
43
  end
49
44
 
50
45
  def endpoint=(endpoint)
51
- if !endpoint.nil? && endpoint.delete(' ').empty?
52
- raise PushError, 'Invalid endpoint override'
53
- end
46
+ raise PushError, 'Invalid endpoint override' if !endpoint.nil? && endpoint.delete(' ').empty?
54
47
 
55
48
  @endpoint = endpoint
56
49
  end
@@ -54,6 +54,7 @@ module Pusher
54
54
  private
55
55
 
56
56
  attr_reader :config
57
+
57
58
  def_delegators :@config, :instance_id, :secret_key, :endpoint
58
59
 
59
60
  def build_publish_url(resource)
@@ -20,6 +20,7 @@ module Pusher
20
20
  private
21
21
 
22
22
  attr_reader :config
23
+
23
24
  def_delegators :@config, :instance_id, :secret_key
24
25
  end
25
26
  end
@@ -1,22 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'caze'
4
-
5
3
  module Pusher
6
4
  module PushNotifications
7
5
  module UseCases
8
6
  class DeleteUser
9
- include Caze
10
-
11
7
  class UserDeletionError < RuntimeError; end
12
8
 
13
- export :delete_user, as: :delete_user
9
+ class << self
10
+ def delete_user(*args, **kwargs)
11
+ new(*args, **kwargs).delete_user
12
+ end
13
+ end
14
14
 
15
15
  def initialize(user:)
16
16
  @user = user
17
17
  @user_id = Pusher::PushNotifications::UserId.new
18
18
 
19
19
  raise UserDeletionError, 'User Id cannot be empty.' if user.empty?
20
+
20
21
  if user.length > UserId::MAX_USER_ID_LENGTH
21
22
  raise UserDeletionError, 'User id length too long ' \
22
23
  "(expected fewer than #{UserId::MAX_USER_ID_LENGTH + 1} characters)"
@@ -1,22 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'caze'
4
-
5
3
  module Pusher
6
4
  module PushNotifications
7
5
  module UseCases
8
6
  class GenerateToken
9
- include Caze
10
-
11
7
  class GenerateTokenError < RuntimeError; end
12
8
 
13
- export :generate_token, as: :generate_token
9
+ class << self
10
+ def generate_token(*args, **kwargs)
11
+ new(*args, **kwargs).generate_token
12
+ end
13
+ end
14
14
 
15
15
  def initialize(user:)
16
16
  @user = user
17
17
  @user_id = Pusher::PushNotifications::UserId.new
18
18
 
19
19
  raise GenerateTokenError, 'User Id cannot be empty.' if user.empty?
20
+
20
21
  if user.length > UserId::MAX_USER_ID_LENGTH
21
22
  raise GenerateTokenError, 'User id length too long ' \
22
23
  "(expected fewer than #{UserId::MAX_USER_ID_LENGTH + 1} characters)"
@@ -1,36 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'caze'
4
-
5
3
  module Pusher
6
4
  module PushNotifications
7
5
  module UseCases
8
6
  class Publish
9
- include Caze
10
-
11
7
  class PublishError < RuntimeError; end
12
8
 
13
- export :publish, as: :publish
14
- export :publish_to_interests, as: :publish_to_interests
9
+ class << self
10
+ def publish(*args, **kwargs)
11
+ new(*args, **kwargs).publish
12
+ end
13
+
14
+ def publish_to_interests(*args, **kwargs)
15
+ new(*args, **kwargs).publish_to_interests
16
+ end
17
+ end
15
18
 
16
19
  def initialize(interests:, payload: {})
17
20
  @interests = interests
18
21
  @payload = payload
19
22
  @user_id = Pusher::PushNotifications::UserId.new
20
23
 
21
- valid_interest_pattern = /^(_|\-|=|@|,|\.|:|[A-Z]|[a-z]|[0-9])*$/
24
+ valid_interest_pattern = /^(_|-|=|@|,|\.|:|[A-Z]|[a-z]|[0-9])*$/
22
25
 
23
26
  interests.each do |interest|
24
27
  next if valid_interest_pattern.match?(interest)
28
+
25
29
  raise PublishError,
26
30
  "Invalid interest name \nMax #{UserId::MAX_USER_ID_LENGTH}" \
27
31
  ' characters and can only contain ASCII upper/lower-case' \
28
32
  ' letters, numbers or one of _-=@,.:'
29
33
  end
30
34
 
31
- if interests.empty?
32
- raise PublishError, 'Must provide at least one interest'
33
- end
35
+ raise PublishError, 'Must provide at least one interest' if interests.empty?
36
+
34
37
  if interests.length > 100
35
38
  raise PublishError, "Number of interests #{interests.length}" \
36
39
  ' exceeds maximum of 100'
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'caze'
4
-
5
3
  module Pusher
6
4
  module PushNotifications
7
5
  module UseCases
8
6
  class PublishToUsers
9
- include Caze
10
-
11
7
  class UsersPublishError < RuntimeError; end
12
8
 
13
- export :publish_to_users, as: :publish_to_users
9
+ class << self
10
+ def publish_to_users(*args, **kwargs)
11
+ new(*args, **kwargs).publish_to_users
12
+ end
13
+ end
14
14
 
15
15
  def initialize(users:, payload: {})
16
16
  @users = users
@@ -21,14 +21,14 @@ module Pusher
21
21
  raise UsersPublishError, 'User Id cannot be empty.' if user.empty?
22
22
 
23
23
  next unless user.length > UserId::MAX_USER_ID_LENGTH
24
+
24
25
  raise UsersPublishError, 'User id length too long ' \
25
26
  "(expected fewer than #{UserId::MAX_USER_ID_LENGTH + 1}" \
26
27
  ' characters)'
27
28
  end
28
29
 
29
- if users.count < 1
30
- raise UsersPublishError, 'Must supply at least one user id.'
31
- end
30
+ raise UsersPublishError, 'Must supply at least one user id.' if users.count < 1
31
+
32
32
  if users.length > UserId::MAX_NUM_USER_IDS
33
33
  raise UsersPublishError, "Number of user ids #{users.length} "\
34
34
  "exceeds maximum of #{UserId::MAX_NUM_USER_IDS}."
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pusher
4
4
  module PushNotifications
5
- VERSION = '1.3.0'
5
+ VERSION = '2.0.0'
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ ## Description
2
+
3
+ Add a short description of the change. If this is related to an issue, please add a reference to the issue.
4
+
5
+ ## CHANGELOG
6
+
7
+ * [CHANGED] Describe your change here. Look at CHANGELOG.md to see the format.
@@ -5,6 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'pusher/push_notifications/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
+ spec.required_ruby_version = '>= 2.4.2'
8
9
  spec.name = 'pusher-push-notifications'
9
10
  spec.version = Pusher::PushNotifications::VERSION
10
11
  spec.authors = ['Lucas Medeiros', 'Pusher']
@@ -21,16 +22,15 @@ Gem::Specification.new do |spec|
21
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
23
  spec.require_paths = ['lib']
23
24
 
24
- spec.add_dependency 'caze', '~> 0'
25
25
  spec.add_dependency 'jwt', '~> 2.1', '>= 2.1.0'
26
26
  spec.add_dependency 'rest-client', '~> 2.0', '>= 2.0.2'
27
27
 
28
- spec.add_development_dependency 'bundler', '~> 1.16'
28
+ spec.add_development_dependency 'bundler', '~> 2.2'
29
29
  spec.add_development_dependency 'codecov', '~> 0'
30
30
  spec.add_development_dependency 'coveralls', '~> 0.8.21'
31
31
  spec.add_development_dependency 'dotenv', '~> 2.2', '>= 2.2.1'
32
32
  spec.add_development_dependency 'pry-byebug', '~> 3.6', '>= 3.6.0'
33
- spec.add_development_dependency 'rake', '~> 10.0'
33
+ spec.add_development_dependency 'rake', '~> 13.0'
34
34
  spec.add_development_dependency 'rb-readline', '~> 0'
35
35
  spec.add_development_dependency 'rspec', '~> 3.0'
36
36
  spec.add_development_dependency 'rubocop', '>= 0.49.0'
metadata CHANGED
@@ -1,50 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pusher-push-notifications
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Medeiros
8
8
  - Pusher
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-07-02 00:00:00.000000000 Z
12
+ date: 2021-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: caze
15
+ name: jwt
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: jwt
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
20
+ version: '2.1'
32
21
  - - ">="
33
22
  - !ruby/object:Gem::Version
34
23
  version: 2.1.0
35
- - - "~>"
36
- - !ruby/object:Gem::Version
37
- version: '2.1'
38
24
  type: :runtime
39
25
  prerelease: false
40
26
  version_requirements: !ruby/object:Gem::Requirement
41
27
  requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: 2.1.0
45
28
  - - "~>"
46
29
  - !ruby/object:Gem::Version
47
30
  version: '2.1'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.0
48
34
  - !ruby/object:Gem::Dependency
49
35
  name: rest-client
50
36
  requirement: !ruby/object:Gem::Requirement
@@ -71,14 +57,14 @@ dependencies:
71
57
  requirements:
72
58
  - - "~>"
73
59
  - !ruby/object:Gem::Version
74
- version: '1.16'
60
+ version: '2.2'
75
61
  type: :development
76
62
  prerelease: false
77
63
  version_requirements: !ruby/object:Gem::Requirement
78
64
  requirements:
79
65
  - - "~>"
80
66
  - !ruby/object:Gem::Version
81
- version: '1.16'
67
+ version: '2.2'
82
68
  - !ruby/object:Gem::Dependency
83
69
  name: codecov
84
70
  requirement: !ruby/object:Gem::Requirement
@@ -131,36 +117,36 @@ dependencies:
131
117
  name: pry-byebug
132
118
  requirement: !ruby/object:Gem::Requirement
133
119
  requirements:
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: 3.6.0
137
120
  - - "~>"
138
121
  - !ruby/object:Gem::Version
139
122
  version: '3.6'
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 3.6.0
140
126
  type: :development
141
127
  prerelease: false
142
128
  version_requirements: !ruby/object:Gem::Requirement
143
129
  requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: 3.6.0
147
130
  - - "~>"
148
131
  - !ruby/object:Gem::Version
149
132
  version: '3.6'
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 3.6.0
150
136
  - !ruby/object:Gem::Dependency
151
137
  name: rake
152
138
  requirement: !ruby/object:Gem::Requirement
153
139
  requirements:
154
140
  - - "~>"
155
141
  - !ruby/object:Gem::Version
156
- version: '10.0'
142
+ version: '13.0'
157
143
  type: :development
158
144
  prerelease: false
159
145
  version_requirements: !ruby/object:Gem::Requirement
160
146
  requirements:
161
147
  - - "~>"
162
148
  - !ruby/object:Gem::Version
163
- version: '10.0'
149
+ version: '13.0'
164
150
  - !ruby/object:Gem::Dependency
165
151
  name: rb-readline
166
152
  requirement: !ruby/object:Gem::Requirement
@@ -243,7 +229,7 @@ dependencies:
243
229
  - - ">="
244
230
  - !ruby/object:Gem::Version
245
231
  version: 3.0.1
246
- description:
232
+ description:
247
233
  email:
248
234
  - lucastoc@gmail.com
249
235
  - support@pusher.com
@@ -253,10 +239,14 @@ extra_rdoc_files: []
253
239
  files:
254
240
  - ".coveralls.yml"
255
241
  - ".env.sample"
242
+ - ".github/stale.yml"
243
+ - ".github/workflows/gh-release.yml"
244
+ - ".github/workflows/publish.yml"
245
+ - ".github/workflows/release.yml"
246
+ - ".github/workflows/test.yml"
256
247
  - ".gitignore"
257
248
  - ".rspec"
258
249
  - ".rubocop.yml"
259
- - ".travis.yml"
260
250
  - CHANGELOG.md
261
251
  - Gemfile
262
252
  - Gemfile.lock
@@ -275,12 +265,13 @@ files:
275
265
  - lib/pusher/push_notifications/user_id.rb
276
266
  - lib/pusher/push_notifications/version.rb
277
267
  - lib/pusher_push_notifications.rb
268
+ - pull_request_template.md
278
269
  - pusher-push-notifications.gemspec
279
270
  homepage: https://github.com/pusher/push-notifications-ruby
280
271
  licenses:
281
272
  - MIT
282
273
  metadata: {}
283
- post_install_message:
274
+ post_install_message:
284
275
  rdoc_options: []
285
276
  require_paths:
286
277
  - lib
@@ -288,15 +279,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
288
279
  requirements:
289
280
  - - ">="
290
281
  - !ruby/object:Gem::Version
291
- version: '0'
282
+ version: 2.4.2
292
283
  required_rubygems_version: !ruby/object:Gem::Requirement
293
284
  requirements:
294
285
  - - ">="
295
286
  - !ruby/object:Gem::Version
296
287
  version: '0'
297
288
  requirements: []
298
- rubygems_version: 3.0.8
299
- signing_key:
289
+ rubygems_version: 3.1.2
290
+ signing_key:
300
291
  specification_version: 4
301
292
  summary: Pusher Push Notifications Ruby server SDK
302
293
  test_files: []
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.2
5
- before_install: gem install bundler -v 1.16.0
6
- script:
7
- - bundle exec rake
8
- - bundle exec rubocop