one_signal 0.0.14 → 1.2.1
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 +5 -5
- data/.env.example +2 -0
- data/.github/workflows/ci.yml +24 -0
- data/CHANGELOG.txt +16 -0
- data/LICENSE +158 -668
- data/README.md +27 -5
- data/example.rb +42 -298
- data/lib/one_signal/app.rb +16 -14
- data/lib/one_signal/notification.rb +33 -18
- data/lib/one_signal/one_signal.rb +32 -20
- data/lib/one_signal/player.rb +52 -17
- data/lib/one_signal/version.rb +1 -1
- data/one_signal.gemspec +2 -3
- data/test/app_test.rb +47 -6
- data/test/helper.rb +1 -1
- data/test/notification_test.rb +64 -8
- data/test/one_signal_test.rb +17 -14
- data/test/player_test.rb +114 -13
- metadata +11 -25
- data/.travis.yml +0 -5
@@ -2,12 +2,14 @@ module OneSignal
|
|
2
2
|
|
3
3
|
class Notification < OneSignal
|
4
4
|
|
5
|
-
def self.all(params: {})
|
5
|
+
def self.all(params: {}, opts: {})
|
6
|
+
opts[:auth_key] ||= @@api_key
|
7
|
+
|
6
8
|
uri_string = @@base_uri
|
7
9
|
uri_string += "/notifications"
|
8
10
|
uri = URI.parse(uri_string)
|
9
11
|
|
10
|
-
response = send_get_request(uri: uri, params: params)
|
12
|
+
response = send_get_request(uri: uri, params: params, opts: opts)
|
11
13
|
|
12
14
|
ensure_http_status(response: response,
|
13
15
|
status: '200',
|
@@ -18,13 +20,15 @@ module OneSignal
|
|
18
20
|
return response
|
19
21
|
end
|
20
22
|
|
21
|
-
def self.get(id
|
23
|
+
def self.get(id: "", params: {}, opts: {})
|
24
|
+
opts[:auth_key] ||= @@api_key
|
25
|
+
|
22
26
|
uri_string = @@base_uri
|
23
27
|
uri_string += "/notifications"
|
24
28
|
uri_string += "/#{id}"
|
25
29
|
uri = URI.parse(uri_string)
|
26
30
|
|
27
|
-
response = send_get_request(uri: uri, params: params)
|
31
|
+
response = send_get_request(uri: uri, params: params, opts: opts)
|
28
32
|
|
29
33
|
ensure_http_status(response: response,
|
30
34
|
status: '200',
|
@@ -35,12 +39,14 @@ module OneSignal
|
|
35
39
|
return response
|
36
40
|
end
|
37
41
|
|
38
|
-
def self.create(params: {})
|
42
|
+
def self.create(params: {}, opts: {})
|
43
|
+
opts[:auth_key] ||= @@api_key
|
44
|
+
|
39
45
|
uri_string = @@base_uri
|
40
46
|
uri_string += "/notifications"
|
41
47
|
uri = URI.parse(uri_string)
|
42
|
-
|
43
|
-
response = send_post_request(uri: uri, body: params)
|
48
|
+
|
49
|
+
response = send_post_request(uri: uri, body: params, opts: opts)
|
44
50
|
|
45
51
|
if response.code != '200'
|
46
52
|
handle_error(uri: uri, params: params, response: response)
|
@@ -49,13 +55,15 @@ module OneSignal
|
|
49
55
|
return response
|
50
56
|
end
|
51
57
|
|
52
|
-
def self.update(id
|
58
|
+
def self.update(id: "", params: {}, opts: {})
|
59
|
+
opts[:auth_key] ||= @@api_key
|
60
|
+
|
53
61
|
uri_string = @@base_uri
|
54
62
|
uri_string += "/notifications"
|
55
63
|
uri_string += "/#{id}"
|
56
64
|
uri = URI.parse(uri_string)
|
57
65
|
|
58
|
-
response = send_put_request(uri: uri, body: params)
|
66
|
+
response = send_put_request(uri: uri, body: params, opts: opts)
|
59
67
|
|
60
68
|
ensure_http_status(response: response,
|
61
69
|
status: '200',
|
@@ -66,13 +74,15 @@ module OneSignal
|
|
66
74
|
return response
|
67
75
|
end
|
68
76
|
|
69
|
-
def self.delete(id
|
77
|
+
def self.delete(id: "", params: {}, opts: {})
|
78
|
+
opts[:auth_key] ||= @@api_key
|
79
|
+
|
70
80
|
uri_string = @@base_uri
|
71
81
|
uri_string += "/notifications"
|
72
82
|
uri_string += "/#{id}"
|
73
83
|
uri = URI.parse(uri_string)
|
74
84
|
|
75
|
-
response = send_delete_request(uri: uri, params: params)
|
85
|
+
response = send_delete_request(uri: uri, params: params, opts: opts)
|
76
86
|
|
77
87
|
ensure_http_status(response: response,
|
78
88
|
status: '200',
|
@@ -85,21 +95,26 @@ module OneSignal
|
|
85
95
|
|
86
96
|
private
|
87
97
|
|
88
|
-
def self.handle_error(uri
|
98
|
+
def self.handle_error(uri: nil, params: {}, response: nil)
|
89
99
|
msg = "Create Notification error - uri: #{uri} params: #{params}"
|
100
|
+
unless response.nil?
|
101
|
+
code = response.code
|
102
|
+
body = response.body
|
103
|
+
end
|
90
104
|
if is_no_recipients_error(response: response)
|
91
105
|
raise NoRecipientsError.new(message: msg,
|
92
|
-
http_status:
|
93
|
-
http_body:
|
106
|
+
http_status: code,
|
107
|
+
http_body: body)
|
94
108
|
else
|
95
109
|
raise OneSignalError.new(message: msg,
|
96
|
-
http_status:
|
97
|
-
http_body:
|
110
|
+
http_status: code,
|
111
|
+
http_body: body)
|
98
112
|
end
|
99
113
|
end
|
100
114
|
|
101
|
-
def self.is_no_recipients_error(response:)
|
102
|
-
return false if response.
|
115
|
+
def self.is_no_recipients_error(response: nil)
|
116
|
+
return false if response.nil? ||
|
117
|
+
response.code != '400' ||
|
103
118
|
response.body.nil?
|
104
119
|
|
105
120
|
body = JSON.parse(response.body)
|
@@ -43,7 +43,9 @@ module OneSignal
|
|
43
43
|
@@read_timeout
|
44
44
|
end
|
45
45
|
|
46
|
-
def self.http_object(uri:)
|
46
|
+
def self.http_object(uri: nil)
|
47
|
+
return nil if uri.nil?
|
48
|
+
|
47
49
|
http = Net::HTTP.new(uri.host, uri.port)
|
48
50
|
http.use_ssl = uri.scheme == 'https'
|
49
51
|
http.open_timeout = @@open_timeout
|
@@ -51,49 +53,61 @@ module OneSignal
|
|
51
53
|
return http
|
52
54
|
end
|
53
55
|
|
54
|
-
def self.send_post_request(uri
|
56
|
+
def self.send_post_request(uri: nil, body: nil, opts: {})
|
57
|
+
return nil if uri.nil?
|
58
|
+
|
55
59
|
request = Net::HTTP::Post.new(uri.request_uri)
|
56
60
|
request.body = body.to_json
|
57
|
-
request = request_with_headers(request: request)
|
61
|
+
request = request_with_headers(request: request, opts: opts)
|
58
62
|
|
59
63
|
http = http_object(uri: uri)
|
60
64
|
|
61
|
-
|
65
|
+
return http.request(request)
|
62
66
|
end
|
63
67
|
|
64
|
-
def self.send_delete_request(uri
|
68
|
+
def self.send_delete_request(uri: nil, params: {}, opts: {})
|
69
|
+
return nil if uri.nil?
|
70
|
+
|
65
71
|
uri.query = URI.encode_www_form(params) unless params.nil?
|
66
72
|
request = Net::HTTP::Delete.new(uri.request_uri)
|
67
|
-
request = request_with_headers(request: request)
|
73
|
+
request = request_with_headers(request: request, opts: opts)
|
68
74
|
|
69
75
|
http = http_object(uri: uri)
|
70
76
|
|
71
|
-
|
77
|
+
return http.request(request)
|
72
78
|
end
|
73
79
|
|
74
|
-
def self.send_put_request(uri
|
80
|
+
def self.send_put_request(uri: nil, body: nil, opts: {})
|
81
|
+
return nil if uri.nil?
|
82
|
+
|
75
83
|
request = Net::HTTP::Put.new(uri.request_uri)
|
76
84
|
request.body = body.to_json
|
77
|
-
request = request_with_headers(request: request)
|
85
|
+
request = request_with_headers(request: request, opts: opts)
|
78
86
|
|
79
87
|
http = http_object(uri: uri)
|
80
88
|
|
81
|
-
|
89
|
+
return http.request(request)
|
82
90
|
end
|
83
91
|
|
84
|
-
def self.send_get_request(uri
|
92
|
+
def self.send_get_request(uri: nil, params: {}, opts: {})
|
93
|
+
return nil if uri.nil?
|
94
|
+
|
85
95
|
uri.query = URI.encode_www_form(params) unless params.nil?
|
86
96
|
request = Net::HTTP::Get.new(uri.request_uri)
|
87
|
-
request = request_with_headers(request: request)
|
97
|
+
request = request_with_headers(request: request, opts: opts)
|
88
98
|
|
89
99
|
http = http_object(uri: uri)
|
90
100
|
|
91
|
-
|
101
|
+
return http.request(request)
|
92
102
|
end
|
93
103
|
|
94
104
|
private
|
95
105
|
|
96
|
-
def self.ensure_http_status(response
|
106
|
+
def self.ensure_http_status(response: nil, status: nil, method_name: "", uri: "", params: {})
|
107
|
+
if response.nil? || status.nil?
|
108
|
+
raise OneSignalError.new(message: "Please provide a response (#{response}) and a status (#{status})")
|
109
|
+
end
|
110
|
+
|
97
111
|
if response.code != status.to_s
|
98
112
|
msg = "#{self.name}##{method_name} error - uri: #{uri} params: #{params}"
|
99
113
|
raise OneSignalError.new(message: msg,
|
@@ -102,16 +116,14 @@ module OneSignal
|
|
102
116
|
end
|
103
117
|
end
|
104
118
|
|
105
|
-
def self.request_with_headers(request:)
|
119
|
+
def self.request_with_headers(request: nil, opts: {})
|
120
|
+
return nil if request.nil?
|
121
|
+
|
106
122
|
request.add_field("Content-Type", "application/json")
|
107
|
-
request.add_field("Authorization", "Basic #{
|
123
|
+
request.add_field("Authorization", "Basic #{opts[:auth_key]}")
|
108
124
|
return request
|
109
125
|
end
|
110
126
|
|
111
|
-
def self.auth_key
|
112
|
-
return @@api_key
|
113
|
-
end
|
114
|
-
|
115
127
|
end
|
116
128
|
|
117
129
|
end
|
data/lib/one_signal/player.rb
CHANGED
@@ -2,12 +2,14 @@ module OneSignal
|
|
2
2
|
|
3
3
|
class Player < OneSignal
|
4
4
|
|
5
|
-
def self.csv_export(
|
5
|
+
def self.csv_export(params: {}, opts: {})
|
6
|
+
opts[:auth_key] ||= @@api_key
|
7
|
+
|
6
8
|
uri_string = @@base_uri
|
7
9
|
uri_string += "/players/csv_export"
|
8
10
|
uri = URI.parse(uri_string)
|
9
11
|
|
10
|
-
response = send_post_request(uri: uri, body:
|
12
|
+
response = send_post_request(uri: uri, body: params, opts: opts)
|
11
13
|
|
12
14
|
ensure_http_status(response: response,
|
13
15
|
status: '200',
|
@@ -18,12 +20,14 @@ module OneSignal
|
|
18
20
|
return response
|
19
21
|
end
|
20
22
|
|
21
|
-
def self.all(params: {})
|
23
|
+
def self.all(params: {}, opts: {})
|
24
|
+
opts[:auth_key] ||= @@api_key
|
25
|
+
|
22
26
|
uri_string = @@base_uri
|
23
27
|
uri_string += "/players"
|
24
28
|
uri = URI.parse(uri_string)
|
25
29
|
|
26
|
-
response = send_get_request(uri: uri, params: params)
|
30
|
+
response = send_get_request(uri: uri, params: params, opts: opts)
|
27
31
|
|
28
32
|
ensure_http_status(response: response,
|
29
33
|
status: '200',
|
@@ -34,13 +38,15 @@ module OneSignal
|
|
34
38
|
return response
|
35
39
|
end
|
36
40
|
|
37
|
-
def self.get(id:)
|
41
|
+
def self.get(id: "", opts: {})
|
42
|
+
opts[:auth_key] ||= @@api_key
|
43
|
+
|
38
44
|
uri_string = @@base_uri
|
39
45
|
uri_string += "/players"
|
40
46
|
uri_string += "/#{id}"
|
41
47
|
uri = URI.parse(uri_string)
|
42
|
-
|
43
|
-
response = send_get_request(uri: uri, params: nil)
|
48
|
+
|
49
|
+
response = send_get_request(uri: uri, params: nil, opts: opts)
|
44
50
|
|
45
51
|
ensure_http_status(response: response,
|
46
52
|
status: '200',
|
@@ -51,12 +57,14 @@ module OneSignal
|
|
51
57
|
return response
|
52
58
|
end
|
53
59
|
|
54
|
-
def self.create(params: {})
|
60
|
+
def self.create(params: {}, opts: {})
|
61
|
+
opts[:auth_key] ||= @@api_key
|
62
|
+
|
55
63
|
uri_string = @@base_uri
|
56
64
|
uri_string += "/players"
|
57
65
|
uri = URI.parse(uri_string)
|
58
66
|
|
59
|
-
response = send_post_request(uri: uri, body: params)
|
67
|
+
response = send_post_request(uri: uri, body: params, opts: opts)
|
60
68
|
|
61
69
|
ensure_http_status(response: response,
|
62
70
|
status: '200',
|
@@ -67,14 +75,16 @@ module OneSignal
|
|
67
75
|
return response
|
68
76
|
end
|
69
77
|
|
70
|
-
def self.create_session(id
|
78
|
+
def self.create_session(id: "", params: {}, opts: {})
|
79
|
+
opts[:auth_key] ||= @@api_key
|
80
|
+
|
71
81
|
uri_string = @@base_uri
|
72
82
|
uri_string += "/players"
|
73
83
|
uri_string += "/#{id}"
|
74
84
|
uri_string += "/on_session"
|
75
85
|
uri = URI.parse(uri_string)
|
76
86
|
|
77
|
-
response = send_post_request(uri: uri, body: params)
|
87
|
+
response = send_post_request(uri: uri, body: params, opts: opts)
|
78
88
|
|
79
89
|
ensure_http_status(response: response,
|
80
90
|
status: '200',
|
@@ -85,14 +95,16 @@ module OneSignal
|
|
85
95
|
return response
|
86
96
|
end
|
87
97
|
|
88
|
-
def self.create_purchase(id
|
98
|
+
def self.create_purchase(id: "", params: {}, opts: {})
|
99
|
+
opts[:auth_key] ||= @@api_key
|
100
|
+
|
89
101
|
uri_string = @@base_uri
|
90
102
|
uri_string += "/players"
|
91
103
|
uri_string += "/#{id}"
|
92
104
|
uri_string += "/on_purchase"
|
93
105
|
uri = URI.parse(uri_string)
|
94
106
|
|
95
|
-
response = send_post_request(uri: uri, body: params)
|
107
|
+
response = send_post_request(uri: uri, body: params, opts: opts)
|
96
108
|
|
97
109
|
ensure_http_status(response: response,
|
98
110
|
status: '200',
|
@@ -103,14 +115,16 @@ module OneSignal
|
|
103
115
|
return response
|
104
116
|
end
|
105
117
|
|
106
|
-
def self.create_focus(id
|
118
|
+
def self.create_focus(id: "", params: {}, opts: {})
|
119
|
+
opts[:auth_key] ||= @@api_key
|
120
|
+
|
107
121
|
uri_string = @@base_uri
|
108
122
|
uri_string += "/players"
|
109
123
|
uri_string += "/#{id}"
|
110
124
|
uri_string += "/on_focus"
|
111
125
|
uri = URI.parse(uri_string)
|
112
126
|
|
113
|
-
response = send_post_request(uri: uri, body: params)
|
127
|
+
response = send_post_request(uri: uri, body: params, opts: opts)
|
114
128
|
|
115
129
|
ensure_http_status(response: response,
|
116
130
|
status: '200',
|
@@ -121,13 +135,15 @@ module OneSignal
|
|
121
135
|
return response
|
122
136
|
end
|
123
137
|
|
124
|
-
def self.update(id
|
138
|
+
def self.update(id: "", params: {}, opts: {})
|
139
|
+
opts[:auth_key] ||= @@api_key
|
140
|
+
|
125
141
|
uri_string = @@base_uri
|
126
142
|
uri_string += "/players"
|
127
143
|
uri_string += "/#{id}"
|
128
144
|
uri = URI.parse(uri_string)
|
129
145
|
|
130
|
-
response = send_put_request(uri: uri, body: params)
|
146
|
+
response = send_put_request(uri: uri, body: params, opts: opts)
|
131
147
|
|
132
148
|
ensure_http_status(response: response,
|
133
149
|
status: '200',
|
@@ -138,6 +154,25 @@ module OneSignal
|
|
138
154
|
return response
|
139
155
|
end
|
140
156
|
|
157
|
+
def self.delete(id: "", opts: {})
|
158
|
+
opts[:auth_key] ||= @@api_key
|
159
|
+
|
160
|
+
uri_string = @@base_uri
|
161
|
+
uri_string += "/players"
|
162
|
+
uri_string += "/#{id}"
|
163
|
+
uri = URI.parse(uri_string)
|
164
|
+
|
165
|
+
response = send_delete_request(uri: uri, params: nil, opts: opts)
|
166
|
+
|
167
|
+
ensure_http_status(response: response,
|
168
|
+
status: '200',
|
169
|
+
method_name: 'Delete',
|
170
|
+
uri: uri,
|
171
|
+
params: nil)
|
172
|
+
|
173
|
+
return response
|
174
|
+
end
|
175
|
+
|
141
176
|
end
|
142
177
|
|
143
178
|
end
|
data/lib/one_signal/version.rb
CHANGED
data/one_signal.gemspec
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
require File.expand_path('lib/one_signal/version')
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.required_ruby_version = '>= 2.
|
5
|
-
s.
|
6
|
-
s.add_development_dependency 'rake', '~> 10.4'
|
4
|
+
s.required_ruby_version = '>= 2.0.0'
|
5
|
+
s.add_development_dependency 'rake', '~> 12.0'
|
7
6
|
s.add_development_dependency 'mocha', '~> 1.1'
|
8
7
|
s.add_development_dependency 'dotenv', '~> 2.0'
|
9
8
|
s.add_development_dependency 'minitest', '~> 5.8'
|
data/test/app_test.rb
CHANGED
@@ -15,40 +15,81 @@ class AppTest < MiniTest::Test
|
|
15
15
|
widget: "acme"
|
16
16
|
}
|
17
17
|
|
18
|
-
@user_auth_key = "fake user auth key"
|
19
|
-
|
18
|
+
@user_auth_key = "fake user auth key 123"
|
19
|
+
@user_auth_key_2 = "fake user auth key 456"
|
20
|
+
@opts = {
|
21
|
+
key1: "value1",
|
22
|
+
key2: "vaue2",
|
23
|
+
auth_key: @user_auth_key_2
|
24
|
+
}
|
25
|
+
@default_opts = {
|
26
|
+
auth_key: @user_auth_key
|
27
|
+
}
|
28
|
+
OneSignal::OneSignal.user_auth_key = @user_auth_key
|
20
29
|
end
|
21
30
|
|
22
31
|
def test_all
|
23
32
|
response = mock_response_ok
|
24
33
|
OneSignal::OneSignal.expects(:send_get_request)
|
25
|
-
.with(uri: @all_uri, params: @params)
|
34
|
+
.with(uri: @all_uri, params: @params, opts: @default_opts)
|
26
35
|
.returns(response)
|
27
36
|
assert_equal response, OneSignal::App.all(params: @params)
|
28
37
|
end
|
29
38
|
|
39
|
+
def test_all_with_auth_key
|
40
|
+
response = mock_response_ok
|
41
|
+
OneSignal::OneSignal.expects(:send_get_request)
|
42
|
+
.with(uri: @all_uri, params: @params, opts: @opts)
|
43
|
+
.returns(response)
|
44
|
+
assert_equal response, OneSignal::App.all(params: @params, opts: @opts)
|
45
|
+
end
|
46
|
+
|
30
47
|
def test_get
|
31
48
|
response = mock_response_ok
|
32
49
|
OneSignal::OneSignal.expects(:send_get_request)
|
33
|
-
.with(uri: @get_uri, params: nil)
|
50
|
+
.with(uri: @get_uri, params: nil, opts: @default_opts)
|
34
51
|
.returns(response)
|
35
52
|
assert_equal response, OneSignal::App.get(id: @app_id)
|
36
53
|
end
|
37
54
|
|
55
|
+
def test_get_with_auth_key
|
56
|
+
response = mock_response_ok
|
57
|
+
OneSignal::OneSignal.expects(:send_get_request)
|
58
|
+
.with(uri: @get_uri, params: nil, opts: @opts)
|
59
|
+
.returns(response)
|
60
|
+
assert_equal response, OneSignal::App.get(id: @app_id, opts: @opts)
|
61
|
+
end
|
62
|
+
|
38
63
|
def test_create
|
39
64
|
response = mock_response_ok
|
40
65
|
OneSignal::OneSignal.expects(:send_post_request)
|
41
|
-
.with(uri: @create_uri, body: @params)
|
66
|
+
.with(uri: @create_uri, body: @params, opts: @default_opts)
|
42
67
|
.returns(response)
|
43
68
|
assert_equal response, OneSignal::App.create(params: @params)
|
44
69
|
end
|
45
70
|
|
71
|
+
def test_create_with_auth_key
|
72
|
+
response = mock_response_ok
|
73
|
+
OneSignal::OneSignal.expects(:send_post_request)
|
74
|
+
.with(uri: @create_uri, body: @params, opts: @opts)
|
75
|
+
.returns(response)
|
76
|
+
assert_equal response, OneSignal::App.create(params: @params, opts: @opts)
|
77
|
+
end
|
78
|
+
|
46
79
|
def test_update
|
47
80
|
response = mock_response_ok
|
48
81
|
OneSignal::OneSignal.expects(:send_put_request)
|
49
|
-
.with(uri: @update_uri, body: @params)
|
82
|
+
.with(uri: @update_uri, body: @params, opts: @default_opts)
|
50
83
|
.returns(response)
|
51
84
|
assert_equal response, OneSignal::App.update(id: @app_id, params: @params)
|
52
85
|
end
|
53
86
|
|
87
|
+
def test_update_with_auth_key
|
88
|
+
response = mock_response_ok
|
89
|
+
OneSignal::OneSignal.expects(:send_put_request)
|
90
|
+
.with(uri: @update_uri, body: @params, opts: @opts)
|
91
|
+
.returns(response)
|
92
|
+
assert_equal response, OneSignal::App.update(id: @app_id, params: @params, opts: @opts)
|
93
|
+
end
|
94
|
+
|
54
95
|
end
|