urbanairship 3.0.1 → 3.0.2

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
2
  SHA1:
3
- metadata.gz: fcee0f1f419c973ed8f480899359df8205ef23f6
4
- data.tar.gz: 70e3a0e2e5f3527d25e02afb522b65dd2dcf4e16
3
+ metadata.gz: f00fd9af99e731c4f1b2b1d05d9663b0ecf24f94
4
+ data.tar.gz: 50e049c31aa5c1f467982b6b72741b92e156a639
5
5
  SHA512:
6
- metadata.gz: 7dd348a203f1f9cfaf1a4e796a4c44b8b303180a91b1e0a43fa00ca6daa6f746c97cbca7ed063bb1ce35e625b2022d4d5427321dec3282ad502d9f19d9855f7f
7
- data.tar.gz: d64ec3eafef734228058582157ad9abbb13e425bbfc10cfdd05b724ab64d565e3a22c5777fd53e2cefea0d289d50d6afe471eb63617ea6180ed0da995e2b609c
6
+ metadata.gz: 7d80f09d4cb0a219645dad8c003e468bfd31ee2381f66b2903a9ac7736d5f1fa0bde038f8e42ce59af05ac2f7318ec0178cd8bbb6f29eb3e394d1a5bb4710eb6
7
+ data.tar.gz: 262f4082d982ba83d242ed0d0803d41b9384eb0a9bc8f52ae9bf51d47d6f6816c3ef3c2489de02e8b4a978fa9ba321b6b45a88741498a011eec5fd69501e5b6d
data/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+ --------------------
2
+ 3.0.2
3
+ --------------------
4
+ - Resolve compatibility issues with Rails ActiveSupport
5
+
6
+
7
+
1
8
  --------------------
2
9
  3.0.1
3
10
  --------------------
@@ -16,7 +16,7 @@ module Urbanairship
16
16
  TAGS_URL = BASE_URL + '/tags/'
17
17
  SEGMENTS_URL = BASE_URL + '/segments/'
18
18
 
19
- # Helper method for required keyword args in 2.0 that is compatible with 2.1+
19
+ # Helper method for required keyword args in Ruby 2.0 that is compatible with 2.1+
20
20
  # @example
21
21
  # def say(greeting: required('greeting'))
22
22
  # puts greeting
@@ -32,6 +32,26 @@ module Urbanairship
32
32
  raise ArgumentError.new("required parameter #{arg.to_sym.inspect + ' ' if arg}not passed to method #{method}")
33
33
  end
34
34
 
35
+ # Helper method that sends the indicated method to the indicated object, if the object responds to the method
36
+ # @example
37
+ # try_helper(:first, [1,2,3])
38
+ #
39
+ # >> 1
40
+ def try_helper(method, obj)
41
+ if obj.respond_to?(method)
42
+ obj.send(method)
43
+ end
44
+ end
45
+
46
+ # Helper method that deletes every key-value pair from a hash for which the value is nil
47
+ # @example
48
+ # compact_helper({"a" => 1, "b" => nil})
49
+ #
50
+ # >> {"a" => 1}
51
+ def compact_helper(a_hash)
52
+ a_hash.keep_if {|_, value| !value.nil?}
53
+ end
54
+
35
55
  class Unauthorized < StandardError
36
56
  # raised when we get a 401 from server
37
57
  end
@@ -1,14 +1,15 @@
1
1
  module Urbanairship
2
2
  module Push
3
3
  module Payload
4
- require 'ext/hash'
4
+ require 'urbanairship/common'
5
+
5
6
  include Urbanairship::Common
6
7
 
7
8
  # Notification Object for a Push Payload
8
9
  def notification(alert: nil, ios: nil, android: nil, amazon: nil,
9
10
  blackberry: nil, wns: nil, mpns: nil, actions: nil,
10
11
  interactive: nil)
11
- payload = {
12
+ payload = compact_helper({
12
13
  alert: alert,
13
14
  actions: actions,
14
15
  ios: ios,
@@ -18,7 +19,7 @@ module Urbanairship
18
19
  wns: wns,
19
20
  mpns: mpns,
20
21
  interactive: interactive
21
- }.compact
22
+ })
22
23
  fail ArgumentError, 'Notification body is empty' if payload.empty?
23
24
  payload
24
25
  end
@@ -26,7 +27,7 @@ module Urbanairship
26
27
  # iOS specific portion of Push Notification Object
27
28
  def ios(alert: nil, badge: nil, sound: nil, extra: nil, expiry: nil,
28
29
  category: nil, interactive: nil, content_available: nil)
29
- {
30
+ compact_helper({
30
31
  alert: alert,
31
32
  badge: badge,
32
33
  sound: sound,
@@ -35,13 +36,13 @@ module Urbanairship
35
36
  category: category,
36
37
  interactive: interactive,
37
38
  'content-available' => content_available
38
- }.compact
39
+ })
39
40
  end
40
41
 
41
42
  # Amazon specific portion of Push Notification Object
42
43
  def amazon(alert: nil, consolidation_key: nil, expires_after: nil,
43
44
  extra: nil, title: nil, summary: nil, interactive: nil)
44
- {
45
+ compact_helper({
45
46
  alert: alert,
46
47
  consolidation_key: consolidation_key,
47
48
  expires_after: expires_after,
@@ -49,20 +50,20 @@ module Urbanairship
49
50
  title: title,
50
51
  summary: summary,
51
52
  interactive: interactive
52
- }.compact
53
+ })
53
54
  end
54
55
 
55
56
  # Android specific portion of Push Notification Object
56
57
  def android(alert: nil, collapse_key: nil, time_to_live: nil,
57
58
  extra: nil, delay_while_idle: nil, interactive: nil)
58
- {
59
+ compact_helper({
59
60
  alert: alert,
60
61
  collapse_key: collapse_key,
61
62
  time_to_live: time_to_live,
62
63
  extra: extra,
63
64
  delay_while_idle: delay_while_idle,
64
65
  interactive: interactive
65
- }.compact
66
+ })
66
67
  end
67
68
 
68
69
  # BlackBerry specific portion of Push Notification Object
@@ -72,23 +73,23 @@ module Urbanairship
72
73
 
73
74
  # WNS specific portion of Push Notification Object
74
75
  def wns_payload(alert: nil, toast: nil, tile: nil, badge: nil)
75
- payload = {
76
+ payload = compact_helper({
76
77
  alert: alert,
77
78
  toast: toast,
78
79
  tile: tile,
79
80
  badge: badge
80
- }.compact
81
+ })
81
82
  fail ArgumentError, 'Must specify one message type' if payload.size != 1
82
83
  payload
83
84
  end
84
85
 
85
86
  # MPNS specific portion of Push Notification Object
86
87
  def mpns_payload(alert: nil, toast: nil, tile: nil)
87
- payload = {
88
+ payload = compact_helper({
88
89
  alert: alert,
89
90
  toast: toast,
90
91
  tile: tile
91
- }.compact
92
+ })
92
93
  fail ArgumentError, 'Must specify one message type' if payload.size != 1
93
94
  payload
94
95
  end
@@ -96,7 +97,7 @@ module Urbanairship
96
97
  # Rich Message specific portion of Push Notification Object
97
98
  def message(title: required('title'), body: required('body'), content_type: nil, content_encoding: nil,
98
99
  extra: nil, expiry: nil, icons: nil, options: nil)
99
- {
100
+ compact_helper({
100
101
  title: title,
101
102
  body: body,
102
103
  content_type: content_type,
@@ -105,13 +106,13 @@ module Urbanairship
105
106
  expiry: expiry,
106
107
  icons: icons,
107
108
  options: options
108
- }.compact
109
+ })
109
110
  end
110
111
 
111
112
  # Interactive Notification portion of Push Notification Object
112
113
  def interactive(type: required('type'), button_actions: nil)
113
114
  fail ArgumentError, 'type must not be nil' if type.nil?
114
- { type: type, button_actions: button_actions }.compact
115
+ compact_helper({ type: type, button_actions: button_actions })
115
116
  end
116
117
 
117
118
  def all
@@ -131,13 +132,13 @@ module Urbanairship
131
132
  # Actions for a Push Notification Object
132
133
  def actions(add_tag: nil, remove_tag: nil, open_: nil, share: nil,
133
134
  app_defined: nil)
134
- {
135
+ compact_helper({
135
136
  add_tag: add_tag,
136
137
  remove_tag: remove_tag,
137
138
  open: open_,
138
139
  share: share,
139
140
  app_defined: app_defined
140
- }.compact
141
+ })
141
142
  end
142
143
  end
143
144
  end
@@ -1,6 +1,5 @@
1
1
  require 'json'
2
2
 
3
- require 'ext/object'
4
3
  require 'urbanairship/common'
5
4
  require 'urbanairship/loggable'
6
5
 
@@ -23,13 +22,13 @@ module Urbanairship
23
22
  end
24
23
 
25
24
  def payload
26
- {
25
+ compact_helper({
27
26
  audience: @audience,
28
27
  notification: @notification,
29
28
  options: @options,
30
29
  device_types: @device_types,
31
30
  message: @message
32
- }.compact
31
+ })
33
32
  end
34
33
 
35
34
  # Send the Push Object
@@ -67,11 +66,11 @@ module Urbanairship
67
66
  end
68
67
 
69
68
  def payload
70
- {
69
+ compact_helper({
71
70
  name: @name,
72
71
  schedule: @schedule,
73
72
  push: @push.payload
74
- }.compact
73
+ })
75
74
  end
76
75
 
77
76
  # Schedule the Push Notification
@@ -165,12 +164,13 @@ module Urbanairship
165
164
  # Response to a successful push notification send or schedule.
166
165
  class PushResponse
167
166
  attr_reader :ok, :push_ids, :schedule_url, :operation_id, :payload, :status_code
167
+ include Urbanairship::Common
168
168
 
169
169
  def initialize(http_response_body: nil, http_response_code: nil)
170
170
  @payload = http_response_body || "No Content"
171
171
  @ok = @payload['ok'] || "None"
172
172
  @push_ids = @payload['push_ids'] || "None"
173
- @schedule_url = @payload['schedule_urls'].try(:first) || "None"
173
+ @schedule_url = try_helper(:first, @payload['schedule_urls']) || "None"
174
174
  @operation_id = @payload['operation_id'] || "None"
175
175
  @status_code = http_response_code
176
176
  end
@@ -1,3 +1,3 @@
1
1
  module Urbanairship
2
- VERSION = '3.0.1'
2
+ VERSION = '3.0.2'
3
3
  end
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: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Urban Airship
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-10 00:00:00.000000000 Z
11
+ date: 2015-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unirest
@@ -133,8 +133,6 @@ files:
133
133
  - Rakefile
134
134
  - bin/console
135
135
  - bin/setup
136
- - lib/ext/hash.rb
137
- - lib/ext/object.rb
138
136
  - lib/urbanairship.rb
139
137
  - lib/urbanairship/client.rb
140
138
  - lib/urbanairship/common.rb
data/lib/ext/hash.rb DELETED
@@ -1,5 +0,0 @@
1
- class Hash
2
- def compact
3
- keep_if { |_, value| !value.nil? }
4
- end
5
- end
data/lib/ext/object.rb DELETED
@@ -1,5 +0,0 @@
1
- class Object
2
- def try(method)
3
- send method if respond_to? method
4
- end
5
- end