urbanairship 5.0.1 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 38dbd9cfec000e72c2ce39c1fcd876dc62c31853
4
- data.tar.gz: aff6da919afc6d7b7061effab19e1ef5daf14978
2
+ SHA256:
3
+ metadata.gz: a0a8f54aa42d65833b2a8082b5c1d8f9e9f45e3b6665c4eae63046257a4961d8
4
+ data.tar.gz: 4951fed75673d26690e4098e76c6408fc1f370b10b11b8c0759eef7cabb408a5
5
5
  SHA512:
6
- metadata.gz: 14018e2e9814907acb026aee25ca12fd3b1a84b79e8160faa97a605d07de8347d102bc0c04c76e33011d06d697981315538e4a3ade6a02a12c6ab21725ac7e80
7
- data.tar.gz: 4c92f1fd30db43c76b81706ba299dd05992abeb0b7b90a32e9724ffaeb5f5fbf6faaa77eb8566091831cbcd3b5b9ddf7a84989a303512d35e83bc7a10b0bf316
6
+ metadata.gz: f60e2227e91e5f0fc9765756a5aebb379f70c9db7048720bff76e505ebb83d201c726461964e7796a49be10d2aa6f2ff767f116e23c64b3d56ae2699078bae86
7
+ data.tar.gz: 467c82df1874d9e84ffb65d20a20977f4f2fc016a39d41e3311fec5b17911d7c168103a7ab4275af676bf0f55ff21bc073ce42cfbc0427eaf43b2e8ad8359ca3
@@ -8,4 +8,4 @@ Please read through the agreement at the URL below.
8
8
 
9
9
  If you have questions about this agreement or why we need it please contact us at https://support.urbanairship.com/.
10
10
 
11
- [Contribution Agreement](https://docs.urbanairship.com/contribution-agreement/)
11
+ [Contribution Agreement](https://docs.google.com/forms/d/e/1FAIpQLScErfiz-fXSPpVZ9r8Di2Tr2xDFxt5MgzUel0__9vqUgvko7Q/viewform)
@@ -5,6 +5,7 @@ Please include link to open issue if applicable.
5
5
  * If applicable
6
6
 
7
7
  ### Testing
8
+ - [ ] If these changes added new functionality, I tested them against the live API with real auth
8
9
  - [ ] I wrote tests covering these changes
9
10
 
10
11
  * I've tested for Ruby versions:
@@ -13,7 +14,7 @@ Please include link to open issue if applicable.
13
14
  - [ ] 2.3.1
14
15
 
15
16
  ### Urban Airship Contribution Agreement
16
- https://docs.urbanairship.com/contribution-agreement/
17
+ [Link here](https://docs.google.com/forms/d/e/1FAIpQLScErfiz-fXSPpVZ9r8Di2Tr2xDFxt5MgzUel0__9vqUgvko7Q/viewform)
17
18
 
18
19
  - [ ] I've filled out and signed UA's contribution agreement form.
19
20
 
data/CHANGELOG CHANGED
@@ -1,3 +1,18 @@
1
+ --------------------
2
+ 5.2.0
3
+ --------------------
4
+ - Updates automatic timeout for API request from 5 seconds to 60
5
+ - Adds SMS Register implementation. Register, Opt-out, Uninstall, Lookup
6
+ - Adds SMS Send functionality for Notification object
7
+ - Updates named_user.rb to include NamedUserUninstaller class
8
+ - Adds Email Send support
9
+ - Adds Email Registration support
10
+
11
+ --------------------
12
+ 5.1.0
13
+ --------------------
14
+ - Adds functionality for custom logger
15
+
1
16
  --------------------
2
17
  5.0.1
3
18
  --------------------
data/README.rst CHANGED
@@ -56,6 +56,14 @@ In your app initialization, you can do something like the following:
56
56
  >>> config.timeout = 60
57
57
  >>> end
58
58
 
59
+ If you want to use a custom logger (e.g Rails.logger), you can do:
60
+
61
+ >>> require 'urbanairship'
62
+ >>> Urbanairship.configure do |config|
63
+ >>> config.custom_logger = Rails.logger
64
+ >>> config.log_level = Logger::WARN
65
+ >>> config.timeout = 60
66
+ >>> end
59
67
 
60
68
  Available Configurations
61
69
  ------------------------
@@ -0,0 +1,109 @@
1
+ Email
2
+ =====
3
+
4
+ Register Email Channel
5
+ ----------------------
6
+
7
+ .. code-block:: ruby
8
+
9
+ require 'urbanairship'
10
+ UA = Urbanairship
11
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
12
+ email_channel = UA::Email.new(client: airship)
13
+ email_channel.type = 'email'
14
+ email_channel.commercial_opted_in = '2018-10-28T10:34:22'
15
+ email_channel.address = 'new.name@new.domain.com'
16
+ email_channel.timezone = 'America/Los_Angeles'
17
+ email_channel.locale_country = 'US'
18
+ email_channel.locale_language = 'en'
19
+ email_channel.register
20
+
21
+ .. note::
22
+
23
+ The registration of an email channel should yield a 201 response. The address
24
+ portion must be defined with an email address to register an email channel.
25
+ There are a few more fields listed on the email object that can be set as well
26
+ such as transactional_opted_in.
27
+
28
+ Uninstall Email Channel
29
+ -----------------------
30
+
31
+ .. code-block:: ruby
32
+
33
+ require 'urbanairship'
34
+ UA = Urbanairship
35
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
36
+ email_channel = UA::Email.new(client: airship)
37
+ email_channel.address = 'new.name@new.domain.com'
38
+ email_channel.uninstall
39
+
40
+ .. note::
41
+
42
+ This will uninstall an existing email channel. Note that a valid email must
43
+ be present to make the request.
44
+
45
+ Lookup Email Channel
46
+ --------------------
47
+
48
+ .. code-block:: ruby
49
+
50
+ require 'urbanairship'
51
+ UA = Urbanairship
52
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
53
+ email_channel = UA::Email.new(client: airship)
54
+ email_channel.address = 'new.name@new.domain.com'
55
+ email_channel.lookup
56
+
57
+ Update Email Channel
58
+ --------------------
59
+
60
+ .. code-block:: ruby
61
+
62
+ require 'urbanairship'
63
+ UA = Urbanairship
64
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
65
+ email_channel = UA::Email.new(client: airship)
66
+ email_channel.channel_id = '01234567-890a-bcde-f012-3456789abc0'
67
+ email_channel.type = 'email'
68
+ email_channel.commercial_opted_in = '2018-10-28T10:34:22'
69
+ email_channel.address = 'new.name@new.domain.com'
70
+ email_channel.timezone = 'America/Los_Angeles'
71
+ email_channel.locale_country = 'US'
72
+ email_channel.locale_language = 'en'
73
+ email_channel.update
74
+
75
+ .. note::
76
+
77
+ The only thing required to make a request is the channel_id. However, anything
78
+ that needs to be updated must also be included.
79
+
80
+ Email Tags
81
+ ----------
82
+
83
+ Using the Email Tag class inheriting from Channel Tags, tags can be added,
84
+ removed, or set for a single email channel.
85
+
86
+ .. code-block:: ruby
87
+
88
+ require 'urbanairship'
89
+ UA = Urbanairship
90
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
91
+ email_tags = UA::EmailTags.new(client: airship)
92
+ #set an audience
93
+ email_tags.set_audience(email_address: 'new.name@new.domain.com')
94
+ #add a tag
95
+ email_tags.add(group_name: :group_name, tags: :tag1)
96
+ #remove a tag
97
+ email_tags.remove(group_name: :group_name, tags: :tag1)
98
+ #set a tag
99
+ email_tags.set(group_name: :group_name, tags: :tag1)
100
+ #finally, send the request
101
+ email_tags.send_request
102
+
103
+ .. note::
104
+
105
+ The code-block above can be used to set, add, or remove tags depending on the
106
+ needs of the request. An audience or email channel must be set before adding,
107
+ setting, or removing a tag. It should be noted that add and set functionality cannot
108
+ be used simultaneously, as well as remove and set. Conversely, add and remove
109
+ may be used in the same request.
@@ -0,0 +1,67 @@
1
+ Open Channels
2
+ =============
3
+
4
+ Create Open Channel
5
+ -------------------
6
+ Upon creation an open channel needs an address, boolean opt-in value,
7
+ and an open platform. Further params are optional, and can be set when
8
+ updating an open channel.
9
+
10
+ .. code-block:: ruby
11
+
12
+ require 'urbanairship'
13
+ UA = Urbanairship
14
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
15
+ open_channel = UA::OpenChannel.new(client: airship)
16
+ open_channel.opt_in = true
17
+ open_channel.address = 'address'
18
+ open_channel.open_platform = 'platform'
19
+ open_channel.create()
20
+
21
+ .. note::
22
+
23
+ The creation of an open channel should yield a 201 response. This is the minimum
24
+ required to create an open channel. `opt_in` must be a boolean, `address` and
25
+ `open_platform` must be strings.
26
+
27
+ Update Open Channel
28
+ -------------------
29
+ Updating an open channel is done by updating the attributes on the open channel.
30
+
31
+ .. code-block:: ruby
32
+
33
+ require 'urbanairship'
34
+ UA = Urbanairship
35
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
36
+ open_channel = UA::OpenChannel.new(client: airship)
37
+ open_channel.opt_in = true
38
+ open_channel.address = 'address'
39
+ open_channel.open_platform = 'platform'
40
+ open_channel.channel_id = 'channel_id'
41
+ open_channel.tags= ['tag1', 'tag2']
42
+ open_channel.identifiers = 'identifiers'
43
+
44
+ #creates the open_channel with all the listed attributes
45
+ open_channel.create()
46
+
47
+ #updates open_channel tags
48
+ open_channel.tags = ['tag3', 'tag4']
49
+ open_channel.update(set_tags: true)
50
+
51
+ .. note::
52
+
53
+ Not all of the attributes listed above have to be present to update an open
54
+ channel.
55
+
56
+ Lookup Open Channel
57
+ -------------------
58
+ Looking up an open channel is done by passing the channel_id in question to
59
+ the lookup method.
60
+
61
+ .. code-block:: ruby
62
+
63
+ require 'urbanairship'
64
+ UA = Urbanairship
65
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
66
+ open_channel = UA::OpenChannel.new(client: airship)
67
+ open_channel.lookup(channel_id: 'channel_id')
@@ -287,6 +287,43 @@ platform-specific alerts, and we set a number of other platform-specific options
287
287
  )
288
288
  )
289
289
 
290
+ **Example Email Override**
291
+
292
+ .. code-block:: ruby
293
+
294
+ push.notification = UA.notification(
295
+ alert: 'Hello World!',
296
+ email: UA.email(
297
+ subject: 'Hello Inbox!',
298
+ html_body: '<h2>Richtext body goes here</h2><p>Wow!</p><p><a data-ua-unsubscribe=\"1\" title=\"unsubscribe\" href=\"http://unsubscribe.urbanairship.com/email/success.html\">Unsubscribe</a></p>',
299
+ plaintext_body: 'Plaintext version goes here [[ua-unsubscribe href=\"http://unsubscribe.urbanairship.com/email/success.html\"]]',
300
+ message_type: 'commercial',
301
+ sender_name: 'Airship',
302
+ sender_address: 'team@urbanairship.com',
303
+ reply_to: 'no-reply@urbanairship.com'
304
+ )
305
+ )
306
+
307
+ .. note::
308
+
309
+ Email override MUST be used for sending emails.
310
+
311
+ **Example SMS Override**
312
+
313
+ .. code-block:: ruby
314
+
315
+ push.notification = UA.notification(
316
+ alert: 'Hello World!',
317
+ sms: UA.sms(
318
+ alert: 'Hello SMS!',
319
+ expiry: '2018-04-01T12:00:00'
320
+ )
321
+ )
322
+
323
+ .. note::
324
+
325
+ SMS override MUST be used for sending SMS messages.
326
+
290
327
  **Example Open Platform Override**
291
328
 
292
329
  .. code-block:: ruby
@@ -0,0 +1,67 @@
1
+ SMS Channel
2
+ ===========
3
+
4
+ Register SMS Channel
5
+ --------------------
6
+
7
+ SMS channels need a sender, and MSISDN, upon registration. The opted_in key
8
+ is optional. The opted_in key represents the time when explicit permission was
9
+ received from the user to receive messages. The following is an example of a
10
+ request with an opted_in key.
11
+
12
+
13
+ .. code-block:: ruby
14
+
15
+ require 'urbanairship'
16
+ UA = Urbanairship
17
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
18
+ sms_channel = UA::Sms.new(client: airship)
19
+ sms_channel.msisdn = '15035556789'
20
+ sms_channel.sender = '12345'
21
+ sms_channel.opted_in = '2018-02-13T11:58:59'
22
+ sms_channel.register
23
+
24
+ Opt-Out of SMS Messages
25
+ -----------------------
26
+
27
+ Opting out of SMS messaging requires a sender and a MSISDN to be set.
28
+
29
+ .. code-block:: ruby
30
+
31
+ require 'urbanairship'
32
+ UA = Urbanairship
33
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
34
+ sms_channel = UA::Sms.new(client: airship)
35
+ sms_channel.msisdn = '15035556789'
36
+ sms_channel.sender = '12345'
37
+ sms_channel.opt_out
38
+
39
+ Uninstall SMS Channel
40
+ ---------------------
41
+
42
+ Uninstalling SMS messaging requires a sender and a MSISDN to be set.
43
+
44
+ .. code-block:: ruby
45
+
46
+ require 'urbanairship'
47
+ UA = Urbanairship
48
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
49
+ sms_channel = UA::Sms.new(client: airship)
50
+ sms_channel.msisdn = '15035556789'
51
+ sms_channel.sender = '12345'
52
+ sms_channel.uninstall
53
+
54
+ SMS Channel Lookup
55
+ ------------------
56
+
57
+ Looking up an SMS channel requires a sender and an MSISDN to be set.
58
+
59
+ .. code-block:: ruby
60
+
61
+ require 'urbanairship'
62
+ UA = Urbanairship
63
+ airship = UA::Client.new(key:'application_key', secret:'master_secret')
64
+ sms_channel = UA::Sms.new(client: airship)
65
+ sms_channel.msisdn = '15035556789'
66
+ sms_channel.sender = '12345'
67
+ sms_channel.lookup
@@ -4,6 +4,8 @@ require 'urbanairship/push/schedule'
4
4
  require 'urbanairship/push/push'
5
5
  require 'urbanairship/devices/segment'
6
6
  require 'urbanairship/devices/channel_uninstall'
7
+ require 'urbanairship/devices/sms'
8
+ require 'urbanairship/devices/email'
7
9
  require 'urbanairship/client'
8
10
  require 'urbanairship/common'
9
11
  require 'urbanairship/configuration'
@@ -1,11 +1,12 @@
1
1
  module Urbanairship
2
2
  class Configuration
3
- attr_accessor :log_path, :log_level, :timeout
3
+ attr_accessor :custom_logger, :log_path, :log_level, :timeout
4
4
 
5
5
  def initialize
6
+ @custom_logger = nil
6
7
  @log_path = nil
7
8
  @log_level = Logger::INFO
8
- @timeout = 5
9
+ @timeout = 60
9
10
  end
10
11
  end
11
12
  end
@@ -0,0 +1,131 @@
1
+ require 'urbanairship'
2
+ require 'urbanairship/devices/channel_tags'
3
+
4
+ module Urbanairship
5
+ module Devices
6
+ class Email
7
+ include Urbanairship::Common
8
+ include Urbanairship::Loggable
9
+ attr_accessor :address,
10
+ :commercial_opted_in,
11
+ :commercial_opted_out,
12
+ :locale_country,
13
+ :locale_language,
14
+ :timezone,
15
+ :transactional_opted_in,
16
+ :transactional_opted_out,
17
+ :type,
18
+ :channel_id
19
+
20
+ def initialize(client: required('client'))
21
+ @client = client
22
+ @address = nil
23
+ @commercial_opted_in = nil
24
+ @commercial_opted_out = nil
25
+ @locale_country = nil
26
+ @locale_language = nil
27
+ @timezone = nil
28
+ @transactional_opted_in = nil
29
+ @transactional_opted_out = nil
30
+ @type = nil
31
+ @channel_id = nil
32
+ end
33
+
34
+ def register
35
+ fail ArgumentError, 'address must be set to register email channel' if @address.nil?
36
+
37
+ payload = {
38
+ 'channel': {
39
+ 'address': @address,
40
+ 'commercial_opted_in': @commercial_opted_in,
41
+ 'commercial_opted_out': @commercial_opted_out,
42
+ 'locale_country': @locale_country,
43
+ 'locale_language': @locale_language,
44
+ 'timezone': @timezone,
45
+ 'transactional_opted_in': @transactional_opted_in,
46
+ 'transactional_opted_out': @transactional_opted_out,
47
+ 'type': @type
48
+ }
49
+ }
50
+
51
+ response = @client.send_request(
52
+ method: 'POST',
53
+ body: JSON.dump(payload),
54
+ url: CHANNEL_URL + 'email',
55
+ content_type: 'application/json'
56
+ )
57
+ logger.info("Registering email channel with address #{@address}")
58
+ response
59
+ end
60
+
61
+ def uninstall
62
+ fail ArgumentError, 'address must be set to register email channel' if @address.nil?
63
+
64
+ payload = {
65
+ 'email_address': @address
66
+ }
67
+
68
+ response = @client.send_request(
69
+ method: 'POST',
70
+ body: JSON.dump(payload),
71
+ url: CHANNEL_URL + 'email/uninstall',
72
+ content_type: 'application/json'
73
+ )
74
+ logger.info("Uninstalling email channel with address #{@address}")
75
+ response
76
+ end
77
+
78
+ def lookup
79
+ fail ArgumentError, 'address must be set to lookup email channel' if @address.nil?
80
+
81
+ response = @client.send_request(
82
+ method: 'GET',
83
+ url: CHANNEL_URL + 'email/' + @address
84
+ )
85
+ logger.info("Looking up email channel with address #{@address}")
86
+ response
87
+ end
88
+
89
+ def update
90
+ fail ArgumentError, 'address must be set to update email channel' if @channel_id.nil?
91
+
92
+ channel_data = {}
93
+
94
+ channel_data['address'] = @address if @address
95
+ channel_data['commercial_opted_in'] = @commercial_opted_in if @commercial_opted_in
96
+ channel_data['commercial_opted_out'] = @commercial_opted_out if @commercial_opted_out
97
+ channel_data['locale_country'] = @locale_country if @locale_country
98
+ channel_data['locale_language'] = @locale_language if @locale_language
99
+ channel_data['timezone'] = @timezone if @timezone
100
+ channel_data['transactional_opted_in'] = @transactional_opted_in if @transactional_opted_in
101
+ channel_data['transactional_opted_out'] = @transactional_opted_out if @transactional_opted_out
102
+ channel_data['type'] = @type if @type
103
+
104
+ payload = {channel: channel_data}
105
+
106
+ response = @client.send_request(
107
+ method: 'PUT',
108
+ url: CHANNEL_URL + 'email/' + @channel_id,
109
+ body: JSON.dump(payload),
110
+ content_type: 'application/json'
111
+ )
112
+ logger.info("Updating email channel with address #{@address}")
113
+ response
114
+ end
115
+ end
116
+
117
+ class EmailTags < ChannelTags
118
+ include Urbanairship::Common
119
+
120
+ def initialize(client: required('client'))
121
+ super(client: client)
122
+ @url = CHANNEL_URL + 'email/tags'
123
+ end
124
+
125
+ def set_audience(email_address: required('email_address'))
126
+ @audience['email_address'] = email_address
127
+ end
128
+ end
129
+
130
+ end
131
+ end
@@ -83,5 +83,30 @@ module Urbanairship
83
83
  @data_attribute = 'named_users'
84
84
  end
85
85
  end
86
+
87
+ class NamedUserUninstaller
88
+ include Urbanairship::Common
89
+ include Urbanairship::Loggable
90
+ attr_accessor :named_user_ids
91
+
92
+ def initialize(client: required('client'))
93
+ @client = client
94
+ @named_user_ids = nil
95
+ end
96
+
97
+ def uninstall
98
+ payload = {}
99
+ payload['named_user_id'] = @named_user_ids
100
+
101
+ response = @client.send_request(
102
+ method: 'POST',
103
+ body: JSON.dump(payload),
104
+ url: NAMED_USER_URL + '/uninstall',
105
+ content_type: 'application/json'
106
+ )
107
+ logger.info { "Uninstalled named_user_ids #{@named_user_ids} " }
108
+ response
109
+ end
110
+ end
86
111
  end
87
- end
112
+ end
@@ -0,0 +1,88 @@
1
+ require 'urbanairship'
2
+
3
+ module Urbanairship
4
+ module Devices
5
+ class Sms
6
+ include Urbanairship::Common
7
+ include Urbanairship::Loggable
8
+ attr_accessor :msisdn, :sender, :opted_in, :sender
9
+
10
+ def initialize(client: required('client'))
11
+ @client = client
12
+ @sender = nil
13
+ @msisdn = nil
14
+ @opted_in = nil
15
+ end
16
+
17
+ def register
18
+ fail ArgumentError, 'sender must be set to register sms channel' if @sender.nil?
19
+ fail ArgumentError, 'msisdn must be set to register sms channel' if @msisdn.nil?
20
+
21
+ payload = {
22
+ 'msisdn': @msisdn,
23
+ 'sender': @sender,
24
+ 'opted_in': @opted_in
25
+ }
26
+
27
+ response = @client.send_request(
28
+ method: 'POST',
29
+ body: JSON.dump(payload),
30
+ url: CHANNEL_URL + 'sms',
31
+ content_type: 'application/json'
32
+ )
33
+ logger.info("Registering SMS channel with msisdn #{@msisdn}")
34
+ response
35
+ end
36
+
37
+ def opt_out
38
+ fail ArgumentError, 'sender must be set to register sms channel' if @sender.nil?
39
+ fail ArgumentError, 'msisdn must be set to register sms channel' if @msisdn.nil?
40
+
41
+ payload = {
42
+ 'msisdn': @msisdn,
43
+ 'sender': @sender,
44
+ }
45
+
46
+ response = @client.send_request(
47
+ method: 'POST',
48
+ body: JSON.dump(payload),
49
+ url: CHANNEL_URL + 'sms/opt-out',
50
+ content_type: 'application/json'
51
+ )
52
+ logger.info("Opting Out of SMS messages for #{@msisdn}")
53
+ response
54
+ end
55
+
56
+ def uninstall
57
+ fail ArgumentError, 'sender must be set to register sms channel' if @sender.nil?
58
+ fail ArgumentError, 'msisdn must be set to register sms channel' if @msisdn.nil?
59
+
60
+ payload = {
61
+ 'msisdn': @msisdn,
62
+ 'sender': @sender,
63
+ }
64
+
65
+ response = @client.send_request(
66
+ method: 'POST',
67
+ body: JSON.dump(payload),
68
+ url: CHANNEL_URL + 'sms/uninstall',
69
+ content_type: 'application/json'
70
+ )
71
+ logger.info("Uninstalling SMS channel for #{@msisdn}")
72
+ response
73
+ end
74
+
75
+ def lookup
76
+ fail ArgumentError,'msisdn is required for lookup' if @msisdn.nil?
77
+ fail ArgumentError,'sender is required for lookup' if @sender.nil?
78
+
79
+ response = @client.send_request(
80
+ method: 'GET',
81
+ url: CHANNEL_URL + 'sms/' + @msisdn + '/' + @sender
82
+ )
83
+ logger.info { "Retrieved information for msisdn #{@msisdn}" }
84
+ response
85
+ end
86
+ end
87
+ end
88
+ end
@@ -1,15 +1,13 @@
1
1
  require 'logger'
2
2
 
3
-
4
3
  module Urbanairship
5
4
  module Loggable
6
-
7
5
  def logger
8
6
  Loggable.logger
9
7
  end
10
8
 
11
9
  def self.logger
12
- @logger ||= Loggable.create_logger
10
+ @logger ||= Urbanairship.configuration.custom_logger || Loggable.create_logger
13
11
  end
14
12
 
15
13
  def self.create_logger
@@ -8,7 +8,7 @@ module Urbanairship
8
8
  # Notification Object for a Push Payload
9
9
  def notification(alert: nil, ios: nil, android: nil, amazon: nil,
10
10
  web: nil, wns: nil, open_platforms: nil,
11
- actions: nil, interactive: nil)
11
+ actions: nil, interactive: nil, sms: nil, email: nil)
12
12
  payload = compact_helper({
13
13
  alert: alert,
14
14
  ios: ios,
@@ -17,10 +17,12 @@ module Urbanairship
17
17
  web: web,
18
18
  wns: wns,
19
19
  actions: actions,
20
- interactive: interactive
20
+ interactive: interactive,
21
+ sms: sms,
22
+ email: email
21
23
  })
22
24
  if open_platforms
23
- open_platforms.each {|platform, overrides|
25
+ open_platforms.each {|platform, overrides|
24
26
  payload[platform] = overrides
25
27
  }
26
28
  end
@@ -124,7 +126,7 @@ module Urbanairship
124
126
  end
125
127
 
126
128
  # Open Platform specific portion of Push Notification Object.
127
- def open_platform(alert: nil, title: nil, summary: nil,
129
+ def open_platform(alert: nil, title: nil, summary: nil,
128
130
  extra: nil, media_attachment: nil, interactive: nil)
129
131
  compact_helper({
130
132
  alert: alert,
@@ -171,6 +173,38 @@ module Urbanairship
171
173
  compact_helper({ type: type, button_actions: button_actions })
172
174
  end
173
175
 
176
+ #SMS specific portion of Push Notification Object
177
+ def sms(alert: nil, expiry: nil)
178
+ compact_helper({
179
+ alert: alert,
180
+ expiry: expiry
181
+ })
182
+ end
183
+
184
+
185
+ #Email specific portion of Push Notification Object
186
+ def email(bypass_opt_in_level: nil, html_body: nil, message_type: required('message_type'),
187
+ plaintext_body: required('plaintext_body'), reply_to: required('reply_to'),
188
+ sender_address: required('sender_address'), sender_name: required('sender_name'),
189
+ subject: required('subject'))
190
+ fail ArgumentError, 'Message type must not be nil' if message_type.nil?
191
+ fail ArgumentError, 'Plaintext Body must not be nil' if plaintext_body.nil?
192
+ fail ArgumentError, 'Reply To must not be nil' if reply_to.nil?
193
+ fail ArgumentError, 'Sender address must not be nil' if sender_address.nil?
194
+ fail ArgumentError, 'Sender name must not be nil' if sender_name.nil?
195
+ fail ArgumentError, 'Subject must not be nil' if subject.nil?
196
+ compact_helper({
197
+ bypass_opt_in_level: bypass_opt_in_level,
198
+ html_body: html_body,
199
+ message_type: message_type,
200
+ plaintext_body: plaintext_body,
201
+ reply_to: reply_to,
202
+ sender_address: sender_address,
203
+ sender_name: sender_name,
204
+ subject: subject
205
+ })
206
+ end
207
+
174
208
  def all
175
209
  'all'
176
210
  end
@@ -233,9 +267,9 @@ module Urbanairship
233
267
  fail ArgumentError, 'type must not be nil' if type.nil?
234
268
 
235
269
  mapping = {
236
- big_picture: 'big_picture', big_text: 'big_text', inbox: 'lines'
270
+ big_picture: 'big_picture', big_text: 'big_text', inbox: 'lines'
237
271
  }
238
-
272
+
239
273
  compact_helper({
240
274
  type: type,
241
275
  mapping[type.to_sym] => content,
@@ -154,4 +154,4 @@ module Urbanairship
154
154
  end
155
155
  end
156
156
  end
157
- end
157
+ end
@@ -1,3 +1,3 @@
1
1
  module Urbanairship
2
- VERSION = '5.0.1'
2
+ VERSION = '5.2.0'
3
3
  end
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_runtime_dependency 'rest-client', '>= 1.4', '< 4.0'
31
31
 
32
- spec.add_development_dependency 'bundler', '~> 1'
32
+ spec.add_development_dependency 'bundler', '>= 1'
33
33
  spec.add_development_dependency 'guard-rspec'
34
34
  spec.add_development_dependency 'pry', '~> 0'
35
35
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: urbanairship
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Urban Airship
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-24 00:00:00.000000000 Z
11
+ date: 2019-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -34,14 +34,14 @@ dependencies:
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1'
47
47
  - !ruby/object:Gem::Dependency
@@ -141,14 +141,17 @@ files:
141
141
  - docs/channel_uninstall.rst
142
142
  - docs/conf.py
143
143
  - docs/devices.rst
144
+ - docs/email.rst
144
145
  - docs/examples.rst
145
146
  - docs/exceptions.rst
146
147
  - docs/index.rst
147
148
  - docs/location.rst
148
149
  - docs/named_user.rst
150
+ - docs/open_channels.rst
149
151
  - docs/push.rst
150
152
  - docs/reports.rst
151
153
  - docs/segment.rst
154
+ - docs/sms.rst
152
155
  - docs/static_lists.rst
153
156
  - docs/tags.rst
154
157
  - example/pusher.rb
@@ -159,9 +162,11 @@ files:
159
162
  - lib/urbanairship/devices/channel_tags.rb
160
163
  - lib/urbanairship/devices/channel_uninstall.rb
161
164
  - lib/urbanairship/devices/devicelist.rb
165
+ - lib/urbanairship/devices/email.rb
162
166
  - lib/urbanairship/devices/named_user.rb
163
167
  - lib/urbanairship/devices/open_channel.rb
164
168
  - lib/urbanairship/devices/segment.rb
169
+ - lib/urbanairship/devices/sms.rb
165
170
  - lib/urbanairship/devices/static_lists.rb
166
171
  - lib/urbanairship/loggable.rb
167
172
  - lib/urbanairship/push/audience.rb
@@ -193,8 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
198
  - !ruby/object:Gem::Version
194
199
  version: '0'
195
200
  requirements: []
196
- rubyforge_project:
197
- rubygems_version: 2.4.5.1
201
+ rubygems_version: 3.0.1
198
202
  signing_key:
199
203
  specification_version: 4
200
204
  summary: Ruby Gem for using the Urban Airship API