urbanairship 5.9.0 → 8.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,22 +4,33 @@ require 'time'
4
4
  module Urbanairship
5
5
  module Reports
6
6
  class Helper
7
- def get_url(start_date, end_date, precision)
8
- fail ArgumentError,
9
- 'the parameters cannot be set to nil' if start_date.nil? or end_date.nil? or precision.nil?
10
- precision_array = %w(HOURLY DAILY MONTHLY)
11
- fail ArgumentError,
12
- "Precision must be 'HOURLY', 'DAILY', or 'MONTHLY'" unless precision_array.include?(precision)
7
+ def get_period_params(start_date, end_date, precision)
8
+ validates_parameters_presence!(start_date, end_date, precision)
9
+ validates_precision_format!(precision)
13
10
 
14
11
  begin
15
- start_parsed = Time.parse(start_date)
16
- end_parsed = Time.parse(end_date)
12
+ start_parsed = Time.parse(start_date).iso8601
13
+ end_parsed = Time.parse(end_date).iso8601
14
+
15
+ "?start=#{start_parsed}&end=#{end_parsed}&precision=#{precision}"
17
16
  rescue ArgumentError
18
- fail ArgumentError,
19
- 'start_date and end_date must be valid date strings'
17
+ fail ArgumentError, 'start_date and end_date must be valid date strings'
20
18
  end
21
- url = '?start=' + start_parsed.iso8601 + '&end=' + end_parsed.iso8601
22
- url += '&precision=' + precision
19
+ end
20
+
21
+ private
22
+
23
+ def validates_parameters_presence!(start_date, end_date, precision)
24
+ return unless [start_date, end_date, precision].any?(&:nil?)
25
+
26
+ fail ArgumentError, 'the parameters cannot be set to nil'
27
+ end
28
+
29
+ AUTHORIZED_PRECISIONS = %w(HOURLY DAILY MONTHLY)
30
+ def validates_precision_format!(precision)
31
+ return if AUTHORIZED_PRECISIONS.include?(precision)
32
+
33
+ fail ArgumentError, 'Precision must be "HOURLY", "DAILY", or "MONTHLY"'
23
34
  end
24
35
  end
25
36
 
@@ -35,8 +46,8 @@ module Urbanairship
35
46
  fail ArgumentError,
36
47
  'push_id cannot be nil' if push_id.nil?
37
48
 
38
- url = REPORTS_URL + 'responses/' + push_id
39
- response = @client.send_request(method: 'GET', url: url)
49
+ path = reports_path('responses/' + push_id)
50
+ response = @client.send_request(method: 'GET', path: path)
40
51
  logger.info("Retrieved info on push_id: #{push_id}")
41
52
  response
42
53
  end
@@ -60,10 +71,10 @@ module Urbanairship
60
71
  fail ArgumentError,
61
72
  'start_date and end_date must be valid date strings'
62
73
  end
63
- url = REPORTS_URL + 'responses/list?start=' + start_parsed.iso8601 + '&end=' + end_parsed.iso8601
64
- url += '&limit' + limit.to_s unless limit.nil?
65
- url += '&push_id_start&' + push_id_start unless push_id_start.nil?
66
- @next_page = url
74
+ path = reports_path('responses/list?start=' + start_parsed.iso8601 + '&end=' + end_parsed.iso8601)
75
+ path += '&limit' + limit.to_s unless limit.nil?
76
+ path += '&push_id_start&' + push_id_start unless push_id_start.nil?
77
+ @next_page_path = path
67
78
  @data_attribute = 'pushes'
68
79
  end
69
80
  end
@@ -87,7 +98,7 @@ module Urbanairship
87
98
  end
88
99
  response = @client.send_request(
89
100
  method: 'GET',
90
- url: REPORTS_URL + 'devices/?date=' + date_parsed.iso8601
101
+ path: reports_path('devices/?date=' + date_parsed.iso8601)
91
102
  )
92
103
  logger.info("Retrieved device report for date #{date}")
93
104
  response
@@ -98,8 +109,8 @@ module Urbanairship
98
109
  def initialize(client: required('client'), start_date: required('start_date'),
99
110
  end_date: required('end_date'), precision: required('precision'))
100
111
  super(client: client)
101
- url = Helper.new.get_url(start_date, end_date, precision)
102
- @next_page = REPORTS_URL + 'optins/' + url
112
+ period_params = Helper.new.get_period_params(start_date, end_date, precision)
113
+ @next_page_path = reports_path('optins/' + period_params)
103
114
  @data_attribute = 'optins'
104
115
  end
105
116
  end
@@ -108,8 +119,8 @@ module Urbanairship
108
119
  def initialize(client: required('client'), start_date: required('start_date'),
109
120
  end_date: required('end_date'), precision: required('precision'))
110
121
  super(client: client)
111
- url = Helper.new.get_url(start_date, end_date, precision)
112
- @next_page = REPORTS_URL + 'optouts/' + url
122
+ period_params = Helper.new.get_period_params(start_date, end_date, precision)
123
+ @next_page_path = reports_path('optouts/' + period_params)
113
124
  @data_attribute = 'optouts'
114
125
  end
115
126
  end
@@ -118,8 +129,8 @@ module Urbanairship
118
129
  def initialize(client: required('client'), start_date: required('start_date'),
119
130
  end_date: required('end_date'), precision: required('precision'))
120
131
  super(client: client)
121
- url = Helper.new.get_url(start_date, end_date, precision)
122
- @next_page = REPORTS_URL + 'sends/' + url
132
+ period_params = Helper.new.get_period_params(start_date, end_date, precision)
133
+ @next_page_path = reports_path('sends/' + period_params)
123
134
  @data_attribute = 'sends'
124
135
  end
125
136
  end
@@ -128,8 +139,8 @@ module Urbanairship
128
139
  def initialize(client: required('client'), start_date: required('start_date'),
129
140
  end_date: required('end_date'), precision: required('precision'))
130
141
  super(client: client)
131
- url = Helper.new.get_url(start_date, end_date, precision)
132
- @next_page = REPORTS_URL + 'responses/' + url
142
+ period_params = Helper.new.get_period_params(start_date, end_date, precision)
143
+ @next_page_path = reports_path('responses/' + period_params)
133
144
  @data_attribute = 'responses'
134
145
  end
135
146
  end
@@ -138,8 +149,8 @@ module Urbanairship
138
149
  def initialize(client: required('client'), start_date: required('start_date'),
139
150
  end_date: required('end_date'), precision: required('precision'))
140
151
  super(client: client)
141
- url = Helper.new.get_url(start_date, end_date, precision)
142
- @next_page = REPORTS_URL + 'opens/' + url
152
+ period_params = Helper.new.get_period_params(start_date, end_date, precision)
153
+ @next_page_path = reports_path('opens/' + period_params)
143
154
  @data_attribute = 'opens'
144
155
  end
145
156
  end
@@ -148,8 +159,8 @@ module Urbanairship
148
159
  def initialize(client: required('client'), start_date: required('start_date'),
149
160
  end_date: required('end_date'), precision: required('precision'))
150
161
  super(client: client)
151
- url = Helper.new.get_url(start_date, end_date, precision)
152
- @next_page = REPORTS_URL + 'timeinapp/' + url
162
+ period_params = Helper.new.get_period_params(start_date, end_date, precision)
163
+ @next_page_path = reports_path('timeinapp/' + period_params)
153
164
  @data_attribute = 'timeinapp'
154
165
  end
155
166
  end
@@ -1,3 +1,3 @@
1
1
  module Urbanairship
2
- VERSION = '5.9.0'
2
+ VERSION = '8.0.1'
3
3
  end
data/lib/urbanairship.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'urbanairship/custom_events/custom_event'
2
+ require 'urbanairship/custom_events/payload'
1
3
  require 'urbanairship/push/audience'
2
4
  require 'urbanairship/push/payload'
3
5
  require 'urbanairship/push/schedule'
@@ -11,6 +13,7 @@ require 'urbanairship/devices/sms_notification'
11
13
  require 'urbanairship/devices/mms_notification'
12
14
  require 'urbanairship/devices/create_and_send'
13
15
  require 'urbanairship/devices/attribute'
16
+ require 'urbanairship/devices/attributes'
14
17
  require 'urbanairship/client'
15
18
  require 'urbanairship/common'
16
19
  require 'urbanairship/configuration'
@@ -31,10 +34,13 @@ require 'urbanairship/ab_tests/experiment'
31
34
  require 'urbanairship/ab_tests/ab_test'
32
35
 
33
36
  module Urbanairship
37
+ extend Urbanairship::CustomEvents::Payload
38
+ extend Urbanairship::CustomEvents
34
39
  extend Urbanairship::Push::Audience
35
40
  extend Urbanairship::Push::Payload
36
41
  extend Urbanairship::Push::Schedule
37
42
  extend Urbanairship::Push
43
+ include Urbanairship::CustomEvents
38
44
  include Urbanairship::Devices
39
45
  include Urbanairship::Reports
40
46
  include Urbanairship::Push
data/urbanairship.gemspec CHANGED
@@ -35,4 +35,5 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency 'rake', '~> 12.3.3'
36
36
  spec.add_development_dependency 'rspec', '~> 3'
37
37
  spec.add_development_dependency 'terminal-notifier-guard', '~> 1'
38
+ spec.add_development_dependency 'timecop'
38
39
  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: 5.9.0
4
+ version: 8.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airship
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-29 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -114,6 +114,20 @@ dependencies:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
116
  version: '1'
117
+ - !ruby/object:Gem::Dependency
118
+ name: timecop
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
117
131
  description: A Ruby Library for using the Airship web service API for push notifications
118
132
  and rich app pages.
119
133
  email:
@@ -126,9 +140,9 @@ files:
126
140
  - ".github/ISSUE_TEMPLATE.md"
127
141
  - ".github/PULL_REQUEST_TEMPLATE.md"
128
142
  - ".github/SUPPORT.md"
143
+ - ".github/workflows/ci.yaml"
129
144
  - ".gitignore"
130
145
  - ".rspec"
131
- - ".travis.yml"
132
146
  - CHANGELOG
133
147
  - Gemfile
134
148
  - Guardfile
@@ -168,7 +182,10 @@ files:
168
182
  - lib/urbanairship/client.rb
169
183
  - lib/urbanairship/common.rb
170
184
  - lib/urbanairship/configuration.rb
185
+ - lib/urbanairship/custom_events/custom_event.rb
186
+ - lib/urbanairship/custom_events/payload.rb
171
187
  - lib/urbanairship/devices/attribute.rb
188
+ - lib/urbanairship/devices/attributes.rb
172
189
  - lib/urbanairship/devices/channel_tags.rb
173
190
  - lib/urbanairship/devices/channel_uninstall.rb
174
191
  - lib/urbanairship/devices/create_and_send.rb
@@ -197,7 +214,7 @@ licenses:
197
214
  - Apache-2.0
198
215
  metadata:
199
216
  allowed_push_host: https://rubygems.org
200
- post_install_message:
217
+ post_install_message:
201
218
  rdoc_options: []
202
219
  require_paths:
203
220
  - lib
@@ -212,8 +229,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
229
  - !ruby/object:Gem::Version
213
230
  version: '0'
214
231
  requirements: []
215
- rubygems_version: 3.0.1
216
- signing_key:
232
+ rubygems_version: 3.0.3
233
+ signing_key:
217
234
  specification_version: 4
218
235
  summary: Ruby Gem for using the Airship API
219
236
  test_files: []
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.5
4
- - 2.3.1