pusher-push-notifications 1.3.0 → 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/.coveralls.yml +1 -1
- data/.github/stale.yml +26 -0
- data/.github/workflows/gh-release.yml +35 -0
- data/.github/workflows/publish.yml +17 -0
- data/.github/workflows/release.yml +74 -0
- data/.github/workflows/test.yml +31 -0
- data/CHANGELOG.md +16 -21
- data/Gemfile.lock +73 -83
- data/README.md +1 -2
- data/lib/pusher/push_notifications/client.rb +1 -0
- data/lib/pusher/push_notifications/token.rb +1 -0
- data/lib/pusher/push_notifications/use_cases/delete_user.rb +4 -22
- data/lib/pusher/push_notifications/use_cases/generate_token.rb +5 -21
- data/lib/pusher/push_notifications/use_cases/publish.rb +13 -34
- data/lib/pusher/push_notifications/use_cases/publish_to_users.rb +5 -25
- data/lib/pusher/push_notifications/version.rb +1 -1
- data/lib/pusher/push_notifications.rb +31 -19
- data/pull_request_template.md +7 -0
- data/pusher-push-notifications.gemspec +3 -3
- metadata +25 -34
- data/.travis.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b6ed8156fc1fb15e299754cc324357877136643d3fb11b9ee2df005eac629a0
|
4
|
+
data.tar.gz: 2beec8b29a6f2a8760490e4e8bb50e33cb0a6216147a964ee55f45522c5a3c71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 995111be0507cf0010fc3dbd1dd0a7661ad23ba64409e74cd72f222ed8e938b28df8d751fb28c2fe19bfff13cde35ece544937bf0b314ead0abf651c16b4459f
|
7
|
+
data.tar.gz: b293b85bbd4c64bf6300dc7b2191afc33076736ae722fd56482c89d4b934190ad0da3c2b5da522c6a961c24c9d5473fd4d33a9c3bcf02887abd79cfe34c3bbb1
|
data/.coveralls.yml
CHANGED
@@ -1 +1 @@
|
|
1
|
-
repo_token:
|
1
|
+
repo_token: secret
|
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,74 @@
|
|
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: Prepare Gemfile.lock
|
67
|
+
run: |
|
68
|
+
sed -i "s|pusher-push-notifications ([^)]*)|pusher-push-notifications (${{ env.VERSION }})|" Gemfile.lock
|
69
|
+
- name: Commit changes
|
70
|
+
run: |
|
71
|
+
git add CHANGELOG.md lib/pusher/push_notifications/version.rb Gemfile.lock
|
72
|
+
git commit -m "Bump to version ${{ env.VERSION }}"
|
73
|
+
- name: Push
|
74
|
+
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,31 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
|
3
|
+
## 2.0.1
|
4
4
|
|
5
|
-
|
6
|
-
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
5
|
+
* [CHANGED] Update Gemfile lock on release.
|
7
6
|
|
8
|
-
##
|
7
|
+
## 2.0.0
|
9
8
|
|
10
|
-
|
9
|
+
* [ADDED] Support for Ruby 3.0.
|
10
|
+
* [REMOVED] Support for Ruby 2.5 and below.
|
11
|
+
* [CHANGED] Refactor tests to avoid caze dependency.
|
11
12
|
|
12
|
-
|
13
|
+
## 1.3.0
|
13
14
|
|
14
|
-
Support for multiple instances of Beams clients to exist for more advanced use cases.
|
15
|
+
* [ADDED] Support for multiple instances of Beams clients to exist for more advanced use cases.
|
15
16
|
|
16
|
-
##
|
17
|
+
## 1.2.1
|
17
18
|
|
18
|
-
|
19
|
+
* [FIXED] Endpoint also allows the scheme to be configured to enable for local development.
|
19
20
|
|
20
|
-
|
21
|
+
## 1.2.0
|
21
22
|
|
22
|
-
|
23
|
+
* [ADDED] Support for "endpoint" overrides to allow for internal integration testing.
|
23
24
|
|
24
|
-
|
25
|
+
## 1.1.0
|
25
26
|
|
26
|
-
Support for "
|
27
|
+
* [ADDED] Support for "Authenticated Users" feature: publishToUsers, generateToken and deleteUser.
|
27
28
|
|
28
|
-
##
|
29
|
+
## 1.0.0
|
29
30
|
|
30
|
-
|
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.
|
31
|
+
* [ADDED] General availability (GA) release.
|
data/Gemfile.lock
CHANGED
@@ -1,131 +1,121 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pusher-push-notifications (
|
5
|
-
caze (~> 0)
|
4
|
+
pusher-push-notifications (2.0.2)
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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.
|
20
|
+
simplecov (~> 0.16.1)
|
32
21
|
term-ansicolor (~> 1.3)
|
33
|
-
thor (
|
22
|
+
thor (>= 0.19.4, < 2.0)
|
34
23
|
tins (~> 1.6)
|
35
|
-
crack (0.4.
|
36
|
-
|
37
|
-
diff-lcs (1.
|
38
|
-
docile (1.
|
39
|
-
domain_name (0.5.
|
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.
|
42
|
-
hashdiff (0.
|
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
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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.
|
53
|
-
minitest (5.11.3)
|
40
|
+
mime-types-data (3.2021.0225)
|
54
41
|
netrc (0.11.0)
|
55
|
-
parallel (1.
|
56
|
-
parser (
|
57
|
-
ast (~> 2.
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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 (
|
53
|
+
rake (13.0.3)
|
68
54
|
rb-readline (0.5.5)
|
69
|
-
|
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
|
-
|
74
|
-
|
75
|
-
rspec-
|
76
|
-
rspec-
|
77
|
-
|
78
|
-
|
79
|
-
|
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.
|
82
|
-
rspec-mocks (3.
|
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.
|
85
|
-
rspec-support (3.
|
86
|
-
rubocop (
|
73
|
+
rspec-support (~> 3.10.0)
|
74
|
+
rspec-support (3.10.2)
|
75
|
+
rubocop (1.11.0)
|
87
76
|
parallel (~> 1.10)
|
88
|
-
parser (>=
|
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 (
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
-
|
92
|
+
sync (0.5.0)
|
93
|
+
term-ansicolor (1.7.1)
|
101
94
|
tins (~> 1.0)
|
102
|
-
thor (
|
103
|
-
|
104
|
-
|
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.
|
110
|
-
unicode-display_width (
|
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.
|
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 (~>
|
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 (~>
|
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
|
-
|
126
|
+
2.2.13
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Pusher Beams Ruby Server SDK
|
2
2
|
|
3
|
-
[](https://coveralls.io/github/pusher/push-notifications-ruby?branch=update-sdk)
|
3
|
+
[](https://github.com/pusher/push-notifications-ruby/actions/workflows/test.yml) [](https://coveralls.io/github/pusher/push-notifications-ruby) [](https://rubygems.org/gems/pusher-push-notifications)
|
5
4
|
|
6
5
|
Pusher Beams using the Pusher system.
|
7
6
|
|
@@ -1,41 +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
|
-
|
14
|
-
|
15
|
-
def
|
16
|
-
@user = user
|
17
|
-
@user_id = Pusher::PushNotifications::UserId.new
|
18
|
-
|
9
|
+
# Contacts the Beams service
|
10
|
+
# to remove all the devices of the given user.
|
11
|
+
def self.delete_user(client, user:)
|
19
12
|
raise UserDeletionError, 'User Id cannot be empty.' if user.empty?
|
13
|
+
|
20
14
|
if user.length > UserId::MAX_USER_ID_LENGTH
|
21
15
|
raise UserDeletionError, 'User id length too long ' \
|
22
16
|
"(expected fewer than #{UserId::MAX_USER_ID_LENGTH + 1} characters)"
|
23
17
|
end
|
24
|
-
end
|
25
18
|
|
26
|
-
# Contacts the Beams service
|
27
|
-
# to remove all the devices of the given user.
|
28
|
-
def delete_user
|
29
19
|
client.delete(user)
|
30
20
|
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
attr_reader :user
|
35
|
-
|
36
|
-
def client
|
37
|
-
@client ||= PushNotifications::Client.new
|
38
|
-
end
|
39
21
|
end
|
40
22
|
end
|
41
23
|
end
|
@@ -1,39 +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
|
-
|
14
|
-
|
15
|
-
def initialize(user:)
|
16
|
-
@user = user
|
17
|
-
@user_id = Pusher::PushNotifications::UserId.new
|
18
|
-
|
9
|
+
# Creates a signed JWT for a user id.
|
10
|
+
def self.generate_token(user:)
|
19
11
|
raise GenerateTokenError, 'User Id cannot be empty.' if user.empty?
|
12
|
+
|
20
13
|
if user.length > UserId::MAX_USER_ID_LENGTH
|
21
14
|
raise GenerateTokenError, 'User id length too long ' \
|
22
15
|
"(expected fewer than #{UserId::MAX_USER_ID_LENGTH + 1} characters)"
|
23
16
|
end
|
24
|
-
end
|
25
17
|
|
26
|
-
|
27
|
-
def generate_token
|
28
|
-
{ 'token' => jwt_token.generate(user) }
|
29
|
-
end
|
18
|
+
jwt_token = PushNotifications::Token.new
|
30
19
|
|
31
|
-
|
32
|
-
|
33
|
-
attr_reader :user
|
34
|
-
|
35
|
-
def jwt_token
|
36
|
-
@jwt_token ||= PushNotifications::Token.new
|
20
|
+
{ 'token' => jwt_token.generate(user) }
|
37
21
|
end
|
38
22
|
end
|
39
23
|
end
|
@@ -1,63 +1,42 @@
|
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
# Publish the given payload to the specified interests.
|
10
|
+
# <b>DEPRECATED:</b> Please use <tt>publish_to_interests</tt> instead.
|
11
|
+
def self.publish(client, interests:, payload: {})
|
12
|
+
warn "[DEPRECATION] `publish` is deprecated. \
|
13
|
+
Please use `publish_to_interests` instead."
|
14
|
+
publish_to_interests(client, interests: interests, payload: payload)
|
15
|
+
end
|
20
16
|
|
21
|
-
|
17
|
+
# Publish the given payload to the specified interests.
|
18
|
+
def self.publish_to_interests(client, interests:, payload: {})
|
19
|
+
valid_interest_pattern = /^(_|-|=|@|,|\.|:|[A-Z]|[a-z]|[0-9])*$/
|
22
20
|
|
23
21
|
interests.each do |interest|
|
24
22
|
next if valid_interest_pattern.match?(interest)
|
23
|
+
|
25
24
|
raise PublishError,
|
26
25
|
"Invalid interest name \nMax #{UserId::MAX_USER_ID_LENGTH}" \
|
27
26
|
' characters and can only contain ASCII upper/lower-case' \
|
28
27
|
' letters, numbers or one of _-=@,.:'
|
29
28
|
end
|
30
29
|
|
31
|
-
if interests.empty?
|
32
|
-
|
33
|
-
end
|
30
|
+
raise PublishError, 'Must provide at least one interest' if interests.empty?
|
31
|
+
|
34
32
|
if interests.length > 100
|
35
33
|
raise PublishError, "Number of interests #{interests.length}" \
|
36
34
|
' exceeds maximum of 100'
|
37
35
|
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Publish the given payload to the specified interests.
|
41
|
-
# <b>DEPRECATED:</b> Please use <tt>publish_to_interests</tt> instead.
|
42
|
-
def publish
|
43
|
-
warn "[DEPRECATION] `publish` is deprecated. \
|
44
|
-
Please use `publish_to_interests` instead."
|
45
|
-
publish_to_interests
|
46
|
-
end
|
47
36
|
|
48
|
-
# Publish the given payload to the specified interests.
|
49
|
-
def publish_to_interests
|
50
37
|
data = { interests: interests }.merge!(payload)
|
51
38
|
client.post('publishes', data)
|
52
39
|
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
attr_reader :interests, :payload
|
57
|
-
|
58
|
-
def client
|
59
|
-
@client ||= PushNotifications::Client.new
|
60
|
-
end
|
61
40
|
end
|
62
41
|
end
|
63
42
|
end
|
@@ -1,53 +1,33 @@
|
|
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
|
-
|
14
|
-
|
15
|
-
def initialize(users:, payload: {})
|
16
|
-
@users = users
|
17
|
-
@user_id = Pusher::PushNotifications::UserId.new
|
18
|
-
@payload = payload
|
19
|
-
|
9
|
+
# Publish the given payload to the specified users.
|
10
|
+
def self.publish_to_users(client, users:, payload: {})
|
20
11
|
users.each do |user|
|
21
12
|
raise UsersPublishError, 'User Id cannot be empty.' if user.empty?
|
22
13
|
|
23
14
|
next unless user.length > UserId::MAX_USER_ID_LENGTH
|
15
|
+
|
24
16
|
raise UsersPublishError, 'User id length too long ' \
|
25
17
|
"(expected fewer than #{UserId::MAX_USER_ID_LENGTH + 1}" \
|
26
18
|
' characters)'
|
27
19
|
end
|
28
20
|
|
29
|
-
if users.count < 1
|
30
|
-
|
31
|
-
end
|
21
|
+
raise UsersPublishError, 'Must supply at least one user id.' if users.count < 1
|
22
|
+
|
32
23
|
if users.length > UserId::MAX_NUM_USER_IDS
|
33
24
|
raise UsersPublishError, "Number of user ids #{users.length} "\
|
34
25
|
"exceeds maximum of #{UserId::MAX_NUM_USER_IDS}."
|
35
26
|
end
|
36
|
-
end
|
37
27
|
|
38
|
-
# Publish the given payload to the specified users.
|
39
|
-
def publish_to_users
|
40
28
|
data = { users: users }.merge!(payload)
|
41
29
|
client.post('publishes/users', data)
|
42
30
|
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
attr_reader :users, :payload
|
47
|
-
|
48
|
-
def client
|
49
|
-
@client ||= PushNotifications::Client.new
|
50
|
-
end
|
51
31
|
end
|
52
32
|
end
|
53
33
|
end
|
@@ -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,16 +11,8 @@ 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
|
27
17
|
attr_reader :instance_id, :secret_key
|
28
18
|
|
@@ -34,23 +24,19 @@ module Pusher
|
|
34
24
|
end
|
35
25
|
|
36
26
|
def instance_id=(instance_id)
|
37
|
-
if instance_id.nil? || instance_id.delete(' ').empty?
|
38
|
-
|
39
|
-
end
|
27
|
+
raise PushError, 'Invalid instance id' if instance_id.nil? || instance_id.delete(' ').empty?
|
28
|
+
|
40
29
|
@instance_id = instance_id
|
41
30
|
end
|
42
31
|
|
43
32
|
def secret_key=(secret_key)
|
44
|
-
if secret_key.nil? || secret_key.delete(' ').empty?
|
45
|
-
|
46
|
-
end
|
33
|
+
raise PushError, 'Invalid secret key' if secret_key.nil? || secret_key.delete(' ').empty?
|
34
|
+
|
47
35
|
@secret_key = secret_key
|
48
36
|
end
|
49
37
|
|
50
38
|
def endpoint=(endpoint)
|
51
|
-
if !endpoint.nil? && endpoint.delete(' ').empty?
|
52
|
-
raise PushError, 'Invalid endpoint override'
|
53
|
-
end
|
39
|
+
raise PushError, 'Invalid endpoint override' if !endpoint.nil? && endpoint.delete(' ').empty?
|
54
40
|
|
55
41
|
@endpoint = endpoint
|
56
42
|
end
|
@@ -60,6 +46,32 @@ module Pusher
|
|
60
46
|
|
61
47
|
"https://#{@instance_id}.pushnotifications.pusher.com"
|
62
48
|
end
|
49
|
+
|
50
|
+
def publish(interests:, payload: {})
|
51
|
+
UseCases::Publish.publish(client, interests: interests, payload: payload)
|
52
|
+
end
|
53
|
+
|
54
|
+
def publish_to_interests(interests:, payload: {})
|
55
|
+
UseCases::Publish.publish_to_interests(client, interests: interests, payload: payload)
|
56
|
+
end
|
57
|
+
|
58
|
+
def publish_to_users(users:, payload: {})
|
59
|
+
UseCases::PublishToUsers.publish_to_users(client, users: users, payload: payload)
|
60
|
+
end
|
61
|
+
|
62
|
+
def delete_user(user:)
|
63
|
+
UseCases::DeleteUser.delete_user(client, user: user)
|
64
|
+
end
|
65
|
+
|
66
|
+
def generate_token(user:)
|
67
|
+
UseCases::GenerateToken.generate_token(user: user)
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def client
|
73
|
+
@client ||= Client.new(config: self)
|
74
|
+
end
|
63
75
|
end
|
64
76
|
end
|
65
77
|
end
|
@@ -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', '~>
|
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', '~>
|
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,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pusher-push-notifications
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas Medeiros
|
@@ -9,42 +9,28 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-03-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: jwt
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
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: '
|
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: '
|
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: '
|
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: '
|
149
|
+
version: '13.0'
|
164
150
|
- !ruby/object:Gem::Dependency
|
165
151
|
name: rb-readline
|
166
152
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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,6 +265,7 @@ 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:
|
@@ -288,14 +279,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
288
279
|
requirements:
|
289
280
|
- - ">="
|
290
281
|
- !ruby/object:Gem::Version
|
291
|
-
version:
|
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.
|
289
|
+
rubygems_version: 3.1.2
|
299
290
|
signing_key:
|
300
291
|
specification_version: 4
|
301
292
|
summary: Pusher Push Notifications Ruby server SDK
|