urbanairship 3.2.3 → 3.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/README.rst +34 -14
- data/docs/push.rst +106 -60
- data/lib/urbanairship/client.rb +31 -13
- data/lib/urbanairship/version.rb +1 -1
- data/urbanairship.gemspec +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4088c7ba66111c0c9711aecb5147d3b94983b475
|
4
|
+
data.tar.gz: d1b98a68f237ee6d2e29855e9ce8ed36f4538947
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7159f0a5100b974628d1a0afebd5841250ced0a4f7ecc1d1cc2a53b77acd39601af7041bd0e05df48bb08fd82f186581a32537ec6f66914ffd50cb9211bd1891
|
7
|
+
data.tar.gz: 0576569d8278abe88be7f38edbdfbf21048634eae6550a4d1bbfe87ef173ab541028138bcbac9b31a9b7e79c75e86a237a80c64635a2b11661924d0474255028
|
data/CHANGELOG
CHANGED
data/README.rst
CHANGED
@@ -5,30 +5,40 @@ About
|
|
5
5
|
=====
|
6
6
|
|
7
7
|
``urbanairship`` is a Ruby library for using the `Urban Airship
|
8
|
-
<http://urbanairship.com/>`_ web service API for push notifications
|
9
|
-
app pages.
|
8
|
+
<http://urbanairship.com/>`_ web service API for push notifications
|
9
|
+
and rich app pages.
|
10
|
+
|
10
11
|
|
11
12
|
Requirements
|
12
13
|
============
|
13
14
|
|
14
|
-
|
15
|
+
We officially support the following Ruby versions::
|
16
|
+
|
17
|
+
2.1.10
|
18
|
+
2.2.5
|
19
|
+
2.3.1
|
20
|
+
|
15
21
|
|
16
22
|
Functionality
|
17
23
|
=============
|
18
24
|
|
19
|
-
Version 3.0 is a major upgrade and backwards incompatible with earlier
|
25
|
+
Version 3.0 is a major upgrade and backwards incompatible with earlier
|
26
|
+
versions.
|
20
27
|
|
21
28
|
To encourage the use of our SDK, which takes care of proper channel
|
22
29
|
registration, support for device token registration has been removed.
|
23
|
-
Support for v1 endpoints will also be removed and transitioned to their
|
24
|
-
equivalents where possible.
|
30
|
+
Support for v1 endpoints will also be removed and transitioned to their
|
31
|
+
v3 equivalents where possible.
|
25
32
|
|
26
33
|
A more detailed list of changes can be found in the CHANGELOG.
|
27
34
|
|
35
|
+
|
28
36
|
Installation
|
29
37
|
============
|
30
38
|
|
31
|
-
If you have the ``bundler`` gem (if not you can get it with
|
39
|
+
If you have the ``bundler`` gem (if not you can get it with
|
40
|
+
``$ gem install bundler``) add this line to your application's
|
41
|
+
Gemfile::
|
32
42
|
|
33
43
|
>>> gem 'urbanairship'
|
34
44
|
|
@@ -40,18 +50,20 @@ OR install it yourself as::
|
|
40
50
|
|
41
51
|
>>> gem install urbanairship
|
42
52
|
|
53
|
+
|
43
54
|
Usage
|
44
55
|
=====
|
45
56
|
|
46
57
|
Once the gem has been installed you can start sending pushes!
|
47
58
|
See the `full documentation
|
48
|
-
<http://docs.urbanairship.com/reference/libraries/ruby>`_,
|
59
|
+
<http://docs.urbanairship.com/reference/libraries/ruby>`_,
|
49
60
|
`api examples
|
50
61
|
<http://docs.urbanairship.com/topic-guides/api-examples.html>`_, as well as the
|
51
62
|
`Urban Airship API Documentation
|
52
63
|
<http://docs.urbanairship.com/api/>`_ for more
|
53
64
|
information.
|
54
65
|
|
66
|
+
|
55
67
|
Broadcast to All Devices
|
56
68
|
------------------------
|
57
69
|
|
@@ -64,8 +76,9 @@ Broadcast to All Devices
|
|
64
76
|
>>> p.device_types = UA.all
|
65
77
|
>>> p.send_push
|
66
78
|
|
79
|
+
|
67
80
|
Simple Tag Push
|
68
|
-
|
81
|
+
---------------
|
69
82
|
|
70
83
|
>>> require 'urbanairship'
|
71
84
|
>>> UA = Urbanairship
|
@@ -76,12 +89,14 @@ Simple Tag Push
|
|
76
89
|
>>> p.device_types = UA.all
|
77
90
|
>>> p.send_push
|
78
91
|
|
92
|
+
|
79
93
|
Questions
|
80
94
|
=========
|
81
95
|
|
82
96
|
The best place to ask questions is our support site:
|
83
97
|
http://support.urbanairship.com/
|
84
98
|
|
99
|
+
|
85
100
|
Contributing
|
86
101
|
============
|
87
102
|
|
@@ -90,14 +105,18 @@ Contributing
|
|
90
105
|
3. Commit your changes ``git commit -am 'Add some feature'``
|
91
106
|
4. Push to the branch ``git push origin my-new-feature``
|
92
107
|
5. Create a new Pull Request
|
93
|
-
6. Sign Urban Airship's `contribution agreement
|
108
|
+
6. Sign Urban Airship's `contribution agreement
|
109
|
+
<http://docs.urbanairship.com/contribution-agreement.html>`_.
|
110
|
+
|
111
|
+
**Note**: Changes will not be approved and merged without a signed
|
112
|
+
contribution agreement.
|
94
113
|
|
95
|
-
**Note**: Changes will not be approved and merged without a signed contribution agreement
|
96
114
|
|
97
115
|
Development
|
98
116
|
===========
|
99
117
|
|
100
|
-
After checking out the repo, ensure you have ``bundler`` installed
|
118
|
+
After checking out the repo, ensure you have ``bundler`` installed
|
119
|
+
(``$ gem install bundler``) run::
|
101
120
|
|
102
121
|
>>> $ bin/setup
|
103
122
|
|
@@ -112,5 +131,6 @@ OR you can build a local gem to play with::
|
|
112
131
|
>>> $ gem build urbanairship.gemspec
|
113
132
|
>>> $ gem install ./urbanairship-<VERSION>.gem
|
114
133
|
|
115
|
-
Having a local build will give you better logging if you are running
|
116
|
-
|
134
|
+
Having a local build will give you better logging if you are running
|
135
|
+
into issues, but be careful to make sure to use our released public
|
136
|
+
gem in Production.
|
data/docs/push.rst
CHANGED
@@ -195,75 +195,121 @@ single piece of text:
|
|
195
195
|
|
196
196
|
.. code-block:: ruby
|
197
197
|
|
198
|
-
push.notification = UA.notification(alert
|
198
|
+
push.notification = UA.notification(alert: "Hello, world!")
|
199
199
|
|
200
|
-
You can override the payload with
|
200
|
+
You can override the notification payload with one of the following platform
|
201
|
+
keys::
|
202
|
+
|
203
|
+
ios, amazon, android, blackberry, wns, mpns
|
204
|
+
|
205
|
+
In the examples below, we override the general ``'Hello World!'`` alert with
|
206
|
+
platform-specific alerts, and we set a number of other platform-specific options.
|
207
|
+
|
208
|
+
**Example iOS Override**
|
201
209
|
|
202
210
|
.. code-block:: ruby
|
203
211
|
|
204
|
-
push.notification = UA.
|
205
|
-
alert: '
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
212
|
+
push.notification = UA.notification(
|
213
|
+
alert: 'Hello World!',
|
214
|
+
ios: UA.ios(
|
215
|
+
alert: 'Hello iOS!',
|
216
|
+
badge: 123,
|
217
|
+
sound: 'sound file',
|
218
|
+
extra: { 'key' => 'value', 'key2' => 'value2' }
|
219
|
+
expiry: '2012-01-01 12:45',
|
220
|
+
category: 'category_name',
|
221
|
+
interactive: UA.interactive(
|
222
|
+
type: 'ua_share',
|
223
|
+
button_actions: {
|
224
|
+
share: { share: 'Sharing is caring!' }
|
225
|
+
}
|
226
|
+
),
|
227
|
+
content_available: true
|
228
|
+
)
|
218
229
|
)
|
219
230
|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
231
|
+
**Example Amazon Override**
|
232
|
+
|
233
|
+
.. code-block:: ruby
|
234
|
+
|
235
|
+
push.notification = UA.notification(
|
236
|
+
alert: 'Hello World!',
|
237
|
+
amazon: UA.amazon(
|
238
|
+
alert: 'Hello Amazon!',
|
239
|
+
consolidation_key: 'key',
|
240
|
+
expires_after: '2012-01-01 12:45',
|
241
|
+
extra: { 'key' => 'value', 'key2' => 'value2' },
|
242
|
+
title: 'title',
|
243
|
+
summary: 'summary',
|
244
|
+
interactive: UA.interactive(
|
245
|
+
type: 'ua_share',
|
246
|
+
button_actions: {
|
247
|
+
share: { share: 'Sharing is caring!' }
|
248
|
+
}
|
249
|
+
)
|
232
250
|
)
|
233
251
|
)
|
234
252
|
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
}
|
253
|
+
**Example Android Override**
|
254
|
+
|
255
|
+
.. code-block:: ruby
|
256
|
+
|
257
|
+
push.notification = UA.notification(
|
258
|
+
alert: 'Hello World!',
|
259
|
+
android: UA.android(
|
260
|
+
alert: 'Hello Android!',
|
261
|
+
collapse_key: 'key',
|
262
|
+
time_to_live: 123,
|
263
|
+
extra: { 'key' => 'value', 'key2' => 'value2' },
|
264
|
+
delay_while_idle: false,
|
265
|
+
interactive: UA.interactive(
|
266
|
+
type: 'ua_share',
|
267
|
+
button_actions: {
|
268
|
+
share: { share: 'Sharing is caring!' }
|
269
|
+
}
|
270
|
+
)
|
246
271
|
)
|
247
272
|
)
|
248
273
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
274
|
+
**Example BlackBerry Override**
|
275
|
+
|
276
|
+
.. code-block:: ruby
|
277
|
+
|
278
|
+
push.notification = UA.notification(
|
279
|
+
alert: 'Hello World!',
|
280
|
+
blackberry: UA.blackberry(
|
281
|
+
alert: 'Hello BlackBerry!',
|
282
|
+
body: 'body',
|
283
|
+
content_type: 'text/plain'
|
284
|
+
)
|
253
285
|
)
|
254
286
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
287
|
+
**Example WNS Override**
|
288
|
+
|
289
|
+
.. code-block:: ruby
|
290
|
+
|
291
|
+
push.notification = UA.notification(
|
292
|
+
alert: 'Hello World!',
|
293
|
+
wns: UA.wns_payload(
|
294
|
+
alert: 'Hello WNS!',
|
295
|
+
tile: nil,
|
296
|
+
toast: nil,
|
297
|
+
badge: nil
|
298
|
+
)
|
260
299
|
)
|
261
300
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
301
|
+
**Example MPNS Override**
|
302
|
+
|
303
|
+
.. code-block:: ruby
|
304
|
+
|
305
|
+
push.notification = UA.notification(
|
306
|
+
alert: 'Hello World!',
|
307
|
+
mpns: UA.mpns_payload(
|
308
|
+
alert: 'Hello MPNS!',
|
309
|
+
tile: nil,
|
310
|
+
toast: nil,
|
311
|
+
badge: nil
|
312
|
+
)
|
267
313
|
)
|
268
314
|
|
269
315
|
.. note::
|
@@ -311,8 +357,8 @@ Example:
|
|
311
357
|
.. code-block:: ruby
|
312
358
|
|
313
359
|
push.notification = UA.notification(
|
314
|
-
alert
|
315
|
-
interactive
|
360
|
+
alert: "Hello, world!",
|
361
|
+
interactive: UA.interactive(
|
316
362
|
type: "ua_share",
|
317
363
|
button_actions: {
|
318
364
|
share: {share: "Sharing is caring!"}
|
@@ -324,12 +370,12 @@ Button actions can also be mapped to *actions* objects as shown below:
|
|
324
370
|
|
325
371
|
.. code-block:: ruby
|
326
372
|
|
327
|
-
shared = ua.actions(share
|
373
|
+
shared = ua.actions(share: "Sharing is caring!")
|
328
374
|
push.notification = ua.notification(
|
329
|
-
alert
|
330
|
-
interactive
|
331
|
-
type
|
332
|
-
button_actions
|
375
|
+
alert: "Hello, world!",
|
376
|
+
interactive: ua.interactive(
|
377
|
+
type: "ua_share",
|
378
|
+
button_actions: {
|
333
379
|
"share" : shared
|
334
380
|
}
|
335
381
|
)
|
data/lib/urbanairship/client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require '
|
1
|
+
require 'json'
|
2
|
+
require 'rest-client'
|
2
3
|
require 'urbanairship'
|
3
4
|
|
4
5
|
|
@@ -8,9 +9,6 @@ module Urbanairship
|
|
8
9
|
include Urbanairship::Common
|
9
10
|
include Urbanairship::Loggable
|
10
11
|
|
11
|
-
# set default client timeout to 5 seconds
|
12
|
-
Unirest.timeout(5)
|
13
|
-
|
14
12
|
# Initialize the Client
|
15
13
|
#
|
16
14
|
# @param [Object] key Application Key
|
@@ -58,21 +56,20 @@ module Urbanairship
|
|
58
56
|
|
59
57
|
logger.debug(debug)
|
60
58
|
|
61
|
-
response =
|
62
|
-
|
59
|
+
response = RestClient::Request.execute(
|
60
|
+
method: method,
|
61
|
+
url: url,
|
63
62
|
headers: headers,
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
parameters: body
|
63
|
+
user: @key,
|
64
|
+
password: @secret,
|
65
|
+
payload: body,
|
66
|
+
timeout: 5
|
69
67
|
)
|
70
68
|
|
71
69
|
logger.debug("Received #{response.code} response. Headers:\n\t#{response.headers}\nBody:\n\t#{response.body}")
|
72
|
-
|
73
70
|
Response.check_code(response.code, response)
|
74
71
|
|
75
|
-
|
72
|
+
self.class.build_response(response)
|
76
73
|
end
|
77
74
|
|
78
75
|
# Create a Push Object
|
@@ -88,5 +85,26 @@ module Urbanairship
|
|
88
85
|
def create_scheduled_push
|
89
86
|
Push::ScheduledPush.new(self)
|
90
87
|
end
|
88
|
+
|
89
|
+
# Build a hash from the response object
|
90
|
+
#
|
91
|
+
# @return [Hash] The response body.
|
92
|
+
def self.build_response(response)
|
93
|
+
response_hash = {'code'=>response.code.to_s, 'headers'=>response.headers}
|
94
|
+
|
95
|
+
begin
|
96
|
+
body = JSON.parse(response.body)
|
97
|
+
rescue JSON::ParserError
|
98
|
+
if response.body.nil? || response.body.empty?
|
99
|
+
body = {}
|
100
|
+
else
|
101
|
+
body = response.body
|
102
|
+
response_hash['error'] = 'could not parse response JSON'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
response_hash['body'] = body
|
107
|
+
response_hash
|
108
|
+
end
|
91
109
|
end
|
92
110
|
end
|
data/lib/urbanairship/version.rb
CHANGED
data/urbanairship.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.add_runtime_dependency '
|
30
|
+
spec.add_runtime_dependency 'rest-client', '>= 1.4', '< 4.0'
|
31
31
|
|
32
32
|
spec.add_development_dependency 'bundler', '~> 1'
|
33
33
|
spec.add_development_dependency 'guard-rspec'
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanairship
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Urban Airship
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rest-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.1'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
19
|
+
version: '1.4'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.1'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
29
|
+
version: '1.4'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
188
|
version: '0'
|
189
189
|
requirements: []
|
190
190
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
191
|
+
rubygems_version: 2.5.1
|
192
192
|
signing_key:
|
193
193
|
specification_version: 4
|
194
194
|
summary: Ruby Gem for using the Urban Airship API
|