urbanairship 5.2.0 → 9.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +1 -1
  3. data/.github/ISSUE_TEMPLATE.md +2 -2
  4. data/.github/PULL_REQUEST_TEMPLATE.md +9 -4
  5. data/.github/SUPPORT.md +3 -3
  6. data/.github/workflows/ci.yaml +26 -0
  7. data/.github/workflows/release.yaml +30 -0
  8. data/.gitignore +2 -0
  9. data/CHANGELOG +198 -51
  10. data/LICENSE +1 -1
  11. data/README.rst +159 -57
  12. data/docs/ab_tests.rst +162 -0
  13. data/docs/attributes.rst +73 -0
  14. data/docs/automations.rst +212 -0
  15. data/docs/channel_uninstall.rst +1 -1
  16. data/docs/conf.py +11 -6
  17. data/docs/create_and_send.rst +551 -0
  18. data/docs/devices.rst +1 -1
  19. data/docs/examples.rst +10 -10
  20. data/docs/index.rst +23 -19
  21. data/docs/named_user.rst +27 -5
  22. data/docs/push.rst +37 -18
  23. data/docs/reports.rst +9 -9
  24. data/docs/segment.rst +5 -5
  25. data/docs/sms.rst +19 -0
  26. data/docs/static_lists.rst +4 -4
  27. data/docs/tag_lists.rst +76 -0
  28. data/docs/tags.rst +1 -1
  29. data/example/pusher.rb +3 -7
  30. data/lib/urbanairship/ab_tests/ab_test.rb +88 -0
  31. data/lib/urbanairship/ab_tests/experiment.rb +45 -0
  32. data/lib/urbanairship/ab_tests/variant.rb +34 -0
  33. data/lib/urbanairship/automations/automation.rb +105 -0
  34. data/lib/urbanairship/automations/pipeline.rb +52 -0
  35. data/lib/urbanairship/client.rb +57 -14
  36. data/lib/urbanairship/common.rb +110 -41
  37. data/lib/urbanairship/configuration.rb +3 -1
  38. data/lib/urbanairship/custom_events/custom_event.rb +60 -0
  39. data/lib/urbanairship/custom_events/payload.rb +89 -0
  40. data/lib/urbanairship/devices/attribute.rb +54 -0
  41. data/lib/urbanairship/devices/attributes.rb +53 -0
  42. data/lib/urbanairship/devices/channel_tags.rb +2 -2
  43. data/lib/urbanairship/devices/channel_uninstall.rb +10 -10
  44. data/lib/urbanairship/devices/create_and_send.rb +96 -0
  45. data/lib/urbanairship/devices/devicelist.rb +28 -7
  46. data/lib/urbanairship/devices/email.rb +33 -43
  47. data/lib/urbanairship/devices/email_notification.rb +92 -0
  48. data/lib/urbanairship/devices/mms_notification.rb +107 -0
  49. data/lib/urbanairship/devices/named_user.rb +22 -12
  50. data/lib/urbanairship/devices/open_channel.rb +105 -61
  51. data/lib/urbanairship/devices/segment.rb +10 -15
  52. data/lib/urbanairship/devices/sms.rb +51 -23
  53. data/lib/urbanairship/devices/sms_notification.rb +54 -0
  54. data/lib/urbanairship/devices/static_lists.rb +18 -19
  55. data/lib/urbanairship/devices/tag_lists.rb +82 -0
  56. data/lib/urbanairship/oauth.rb +129 -0
  57. data/lib/urbanairship/push/audience.rb +0 -61
  58. data/lib/urbanairship/push/payload.rb +78 -8
  59. data/lib/urbanairship/push/push.rb +23 -13
  60. data/lib/urbanairship/push/schedule.rb +9 -0
  61. data/lib/urbanairship/reports/response_statistics.rb +42 -31
  62. data/lib/urbanairship/version.rb +1 -1
  63. data/lib/urbanairship.rb +20 -1
  64. data/urbanairship.gemspec +8 -6
  65. metadata +74 -15
  66. data/.travis.yml +0 -4
  67. data/docs/location.rst +0 -127
  68. data/lib/urbanairship/push/location.rb +0 -103
@@ -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.2.0'
2
+ VERSION = '9.3.0'
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'
@@ -6,7 +8,14 @@ require 'urbanairship/devices/segment'
6
8
  require 'urbanairship/devices/channel_uninstall'
7
9
  require 'urbanairship/devices/sms'
8
10
  require 'urbanairship/devices/email'
11
+ require 'urbanairship/devices/email_notification'
12
+ require 'urbanairship/devices/sms_notification'
13
+ require 'urbanairship/devices/mms_notification'
14
+ require 'urbanairship/devices/create_and_send'
15
+ require 'urbanairship/devices/attribute'
16
+ require 'urbanairship/devices/attributes'
9
17
  require 'urbanairship/client'
18
+ require 'urbanairship/oauth'
10
19
  require 'urbanairship/common'
11
20
  require 'urbanairship/configuration'
12
21
  require 'urbanairship/loggable'
@@ -18,16 +27,26 @@ require 'urbanairship/devices/named_user'
18
27
  require 'urbanairship/devices/open_channel'
19
28
  require 'urbanairship/reports/response_statistics'
20
29
  require 'urbanairship/devices/static_lists'
21
- require 'urbanairship/push/location'
30
+ require 'urbanairship/devices/tag_lists'
31
+ require 'urbanairship/automations/pipeline'
32
+ require 'urbanairship/automations/automation'
33
+ require 'urbanairship/ab_tests/variant'
34
+ require 'urbanairship/ab_tests/experiment'
35
+ require 'urbanairship/ab_tests/ab_test'
22
36
 
23
37
  module Urbanairship
38
+ extend Urbanairship::CustomEvents::Payload
39
+ extend Urbanairship::CustomEvents
24
40
  extend Urbanairship::Push::Audience
25
41
  extend Urbanairship::Push::Payload
26
42
  extend Urbanairship::Push::Schedule
27
43
  extend Urbanairship::Push
44
+ include Urbanairship::CustomEvents
28
45
  include Urbanairship::Devices
29
46
  include Urbanairship::Reports
30
47
  include Urbanairship::Push
48
+ include Urbanairship::Automations
49
+ include Urbanairship::AbTests
31
50
 
32
51
  class << self
33
52
  attr_accessor :configuration
data/urbanairship.gemspec CHANGED
@@ -6,12 +6,12 @@ require 'urbanairship/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'urbanairship'
8
8
  spec.version = Urbanairship::VERSION
9
- spec.authors = ['Urban Airship']
10
- spec.email = ['support@urbanairship.com']
9
+ spec.authors = ['Airship']
10
+ spec.email = ['support@airship.com']
11
11
  spec.licenses = ['Apache-2.0']
12
12
 
13
- spec.summary = 'Ruby Gem for using the Urban Airship API'
14
- spec.description = 'A Ruby Library for using the Urban Airship web service API for push notifications and rich app pages.'
13
+ spec.summary = 'Ruby Gem for using the Airship API'
14
+ spec.description = 'A Ruby Library for using the Airship web service API for push notifications and rich app pages.'
15
15
  spec.homepage = 'https://github.com/urbanairship/ruby-library'
16
16
 
17
17
  spec.required_ruby_version = '>= 2.0.0'
@@ -28,11 +28,13 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ['lib']
29
29
 
30
30
  spec.add_runtime_dependency 'rest-client', '>= 1.4', '< 4.0'
31
+ spec.add_runtime_dependency 'jwt', '>= 2.0', '< 3.0'
31
32
 
32
- spec.add_development_dependency 'bundler', '>= 1'
33
+ spec.add_development_dependency 'bundler', '>= 1', '< 2.5'
33
34
  spec.add_development_dependency 'guard-rspec'
34
35
  spec.add_development_dependency 'pry', '~> 0'
35
- spec.add_development_dependency 'rake', '~> 10.0'
36
+ spec.add_development_dependency 'rake', '~> 12.3.3'
36
37
  spec.add_development_dependency 'rspec', '~> 3'
37
38
  spec.add_development_dependency 'terminal-notifier-guard', '~> 1'
39
+ spec.add_development_dependency 'timecop'
38
40
  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.2.0
4
+ version: 9.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Urban Airship
8
- autorequire:
7
+ - Airship
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-25 00:00:00.000000000 Z
11
+ date: 2024-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '4.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: jwt
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.0'
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: bundler
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -37,6 +57,9 @@ dependencies:
37
57
  - - ">="
38
58
  - !ruby/object:Gem::Version
39
59
  version: '1'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.5'
40
63
  type: :development
41
64
  prerelease: false
42
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -44,6 +67,9 @@ dependencies:
44
67
  - - ">="
45
68
  - !ruby/object:Gem::Version
46
69
  version: '1'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '2.5'
47
73
  - !ruby/object:Gem::Dependency
48
74
  name: guard-rspec
49
75
  requirement: !ruby/object:Gem::Requirement
@@ -78,14 +104,14 @@ dependencies:
78
104
  requirements:
79
105
  - - "~>"
80
106
  - !ruby/object:Gem::Version
81
- version: '10.0'
107
+ version: 12.3.3
82
108
  type: :development
83
109
  prerelease: false
84
110
  version_requirements: !ruby/object:Gem::Requirement
85
111
  requirements:
86
112
  - - "~>"
87
113
  - !ruby/object:Gem::Version
88
- version: '10.0'
114
+ version: 12.3.3
89
115
  - !ruby/object:Gem::Dependency
90
116
  name: rspec
91
117
  requirement: !ruby/object:Gem::Requirement
@@ -114,10 +140,24 @@ dependencies:
114
140
  - - "~>"
115
141
  - !ruby/object:Gem::Version
116
142
  version: '1'
117
- description: A Ruby Library for using the Urban Airship web service API for push notifications
143
+ - !ruby/object:Gem::Dependency
144
+ name: timecop
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ description: A Ruby Library for using the Airship web service API for push notifications
118
158
  and rich app pages.
119
159
  email:
120
- - support@urbanairship.com
160
+ - support@airship.com
121
161
  executables: []
122
162
  extensions: []
123
163
  extra_rdoc_files: []
@@ -126,9 +166,10 @@ files:
126
166
  - ".github/ISSUE_TEMPLATE.md"
127
167
  - ".github/PULL_REQUEST_TEMPLATE.md"
128
168
  - ".github/SUPPORT.md"
169
+ - ".github/workflows/ci.yaml"
170
+ - ".github/workflows/release.yaml"
129
171
  - ".gitignore"
130
172
  - ".rspec"
131
- - ".travis.yml"
132
173
  - CHANGELOG
133
174
  - Gemfile
134
175
  - Guardfile
@@ -138,14 +179,17 @@ files:
138
179
  - bin/console
139
180
  - bin/setup
140
181
  - docs/Makefile
182
+ - docs/ab_tests.rst
183
+ - docs/attributes.rst
184
+ - docs/automations.rst
141
185
  - docs/channel_uninstall.rst
142
186
  - docs/conf.py
187
+ - docs/create_and_send.rst
143
188
  - docs/devices.rst
144
189
  - docs/email.rst
145
190
  - docs/examples.rst
146
191
  - docs/exceptions.rst
147
192
  - docs/index.rst
148
- - docs/location.rst
149
193
  - docs/named_user.rst
150
194
  - docs/open_channels.rst
151
195
  - docs/push.rst
@@ -153,24 +197,39 @@ files:
153
197
  - docs/segment.rst
154
198
  - docs/sms.rst
155
199
  - docs/static_lists.rst
200
+ - docs/tag_lists.rst
156
201
  - docs/tags.rst
157
202
  - example/pusher.rb
158
203
  - lib/urbanairship.rb
204
+ - lib/urbanairship/ab_tests/ab_test.rb
205
+ - lib/urbanairship/ab_tests/experiment.rb
206
+ - lib/urbanairship/ab_tests/variant.rb
207
+ - lib/urbanairship/automations/automation.rb
208
+ - lib/urbanairship/automations/pipeline.rb
159
209
  - lib/urbanairship/client.rb
160
210
  - lib/urbanairship/common.rb
161
211
  - lib/urbanairship/configuration.rb
212
+ - lib/urbanairship/custom_events/custom_event.rb
213
+ - lib/urbanairship/custom_events/payload.rb
214
+ - lib/urbanairship/devices/attribute.rb
215
+ - lib/urbanairship/devices/attributes.rb
162
216
  - lib/urbanairship/devices/channel_tags.rb
163
217
  - lib/urbanairship/devices/channel_uninstall.rb
218
+ - lib/urbanairship/devices/create_and_send.rb
164
219
  - lib/urbanairship/devices/devicelist.rb
165
220
  - lib/urbanairship/devices/email.rb
221
+ - lib/urbanairship/devices/email_notification.rb
222
+ - lib/urbanairship/devices/mms_notification.rb
166
223
  - lib/urbanairship/devices/named_user.rb
167
224
  - lib/urbanairship/devices/open_channel.rb
168
225
  - lib/urbanairship/devices/segment.rb
169
226
  - lib/urbanairship/devices/sms.rb
227
+ - lib/urbanairship/devices/sms_notification.rb
170
228
  - lib/urbanairship/devices/static_lists.rb
229
+ - lib/urbanairship/devices/tag_lists.rb
171
230
  - lib/urbanairship/loggable.rb
231
+ - lib/urbanairship/oauth.rb
172
232
  - lib/urbanairship/push/audience.rb
173
- - lib/urbanairship/push/location.rb
174
233
  - lib/urbanairship/push/payload.rb
175
234
  - lib/urbanairship/push/push.rb
176
235
  - lib/urbanairship/push/schedule.rb
@@ -183,7 +242,7 @@ licenses:
183
242
  - Apache-2.0
184
243
  metadata:
185
244
  allowed_push_host: https://rubygems.org
186
- post_install_message:
245
+ post_install_message:
187
246
  rdoc_options: []
188
247
  require_paths:
189
248
  - lib
@@ -198,8 +257,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
257
  - !ruby/object:Gem::Version
199
258
  version: '0'
200
259
  requirements: []
201
- rubygems_version: 3.0.1
202
- signing_key:
260
+ rubygems_version: 3.1.6
261
+ signing_key:
203
262
  specification_version: 4
204
- summary: Ruby Gem for using the Urban Airship API
263
+ summary: Ruby Gem for using the Airship API
205
264
  test_files: []
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.5
4
- - 2.3.1
data/docs/location.rst DELETED
@@ -1,127 +0,0 @@
1
- Locations
2
- =========
3
-
4
- This class allows you to search for location information in
5
- various ways.
6
-
7
-
8
- Name Lookup
9
- -----------
10
-
11
- Search for a location boundary by name. The search primarily
12
- uses the location names, but you can also filter the results
13
- by boundary type. See `the API documentation on location
14
- <http://docs.urbanairship.com/api/ua.html#location>`_
15
- for more information.
16
-
17
- .. code-block:: ruby
18
-
19
- require 'urbanairship'
20
- UA = Urbanairship
21
- airship = UA::Client.new(key:'application_key', secret:'master_secret')
22
- location = UA::Location.new(client: airship)
23
- location.name_lookup(name: 'name', type: 'type')
24
-
25
- .. note::
26
-
27
- ``name`` is a required parameter, but ``type`` is optional
28
-
29
-
30
- Coordinates Lookup
31
- ------------------
32
-
33
- Search for a location by latitude and longitude coordinates. Type is
34
- an optional parameter. See `the API documentation on coordinates lookup
35
- <http://docs.urbanairship.com/api/ua.html#lat-long-lookup>`_
36
- for more information.
37
-
38
- .. code-block:: ruby
39
-
40
- require 'urbanairship'
41
- UA = Urbanairship
42
- airship = UA::Client.new(key:'application_key', secret:'master_secret')
43
- location = UA::Location.new(client: airship)
44
- location.coordinates_lookup(latitude: 123.45, longitude: 123.45, type: 'type')
45
-
46
- .. note::
47
-
48
- ``longitude`` and ``latitude`` are required parameters that must be numbers.
49
- ``Type`` is an optional parameter.
50
-
51
-
52
- Bounding Box Lookup
53
- -------------------
54
-
55
- Search for location using a bounding box. See `the documentation on
56
- bounding box lookup
57
- <http://docs.urbanairship.com/api/ua.html#bounding-box-lookup>`_
58
- for more information.
59
-
60
- .. code-block:: ruby
61
-
62
- require 'urbanairship'
63
- UA = Urbanairship
64
- airship = UA::Client.new(key:'application_key', secret:'master_secret')
65
- location = UA::Location.new(client: airship)
66
- location.bounding_box_lookup(lat1: 123.45, long1: 123.45,
67
- lat2: 321.45, long2: 321.45, type: 'type')
68
-
69
- .. note::
70
-
71
- ``lat1``, ``long1``, ``lat2``, and ``long2`` and are required parameters that must be numbers.
72
- ``Type`` is an optional parameter.
73
-
74
-
75
- Alias Lookup
76
- ------------
77
-
78
- Search for location by alias. See `the documentation on alias lookup
79
- <http://docs.urbanairship.com/api/ua.html#alias-lookup>`_
80
-
81
- .. code-block:: ruby
82
-
83
- require 'urbanairship'
84
- UA = Urbanairship
85
- airship = UA::Client.new(key:'application_key', secret:'master_secret')
86
- location = UA::Location.new(client: airship)
87
- location.alias_lookup(from_alias: 'us_state=CA')
88
-
89
- .. note::
90
-
91
- ``from_alias`` can either be a single alias or an array of aliases.
92
-
93
-
94
- Polygon Lookup
95
- --------------
96
-
97
- Search for location by polygon id. See `the documentation on polygon
98
- lookup <http://docs.urbanairship.com/api/ua.html#polygon-lookup>`_
99
- for more information.
100
-
101
- .. code-block:: ruby
102
-
103
- require 'urbanairship'
104
- UA = Urbanairship
105
- airship = UA::Client.new(key:'application_key', secret:'master_secret')
106
- location = UA::Location.new(client: airship)
107
- location.polygon_lookup(polygon_id: 'id', zoom: 1)
108
-
109
- .. note::
110
-
111
- ``polygon_id`` needs to be a string. ``Zoom`` is a number ranging from 1-20.
112
-
113
-
114
- Location Date Ranges
115
- --------------------
116
-
117
- Get the possible date ranges that can be used with location endpoints. See `the documentation
118
- on location date ranges <http://docs.urbanairship.com/api/ua.html#location-date-ranges>`__
119
- for more information.
120
-
121
- .. code-block:: ruby
122
-
123
- require 'urbanairship'
124
- UA = Urbanairship
125
- airship = UA::Client.new(key:'application_key', secret:'master_secret')
126
- l = UA::Location.new(client: airship)
127
- l.date_ranges
@@ -1,103 +0,0 @@
1
- require 'urbanairship'
2
-
3
-
4
- module Urbanairship
5
- module Push
6
- class Location
7
- include Urbanairship::Common
8
- include Urbanairship::Loggable
9
-
10
- def initialize(client: required('client'))
11
- @client = client
12
- end
13
-
14
- def name_lookup(name: required('name'), type: nil)
15
- fail ArgumentError, 'name needs to be a string' unless name.is_a? String
16
- fail ArgumentError, 'type needs to be a string' unless type.nil? or type.is_a? String
17
- url = LOCATION_URL + '?q=' + name
18
- url += '&type=' + type unless type.nil?
19
- resp = @client.send_request(
20
- method: 'GET',
21
- url: url
22
- )
23
- logger.info("Retrieved location information for #{name}")
24
- resp
25
- end
26
-
27
- def coordinates_lookup(latitude: required('latitude'), longitude: required('longitude'), type: nil)
28
- fail ArgumentError,
29
- 'latitude and longitude need to be numbers' unless latitude.is_a? Numeric and longitude.is_a? Numeric
30
- fail ArgumentError, 'type needs to be a string' unless type.nil? or type.is_a? String
31
- url = LOCATION_URL + latitude.to_s + ',' + longitude.to_s
32
- url += '?type=' + type unless type.nil?
33
- resp = @client.send_request(
34
- method: 'GET',
35
- url: url
36
- )
37
- logger.info("Retrieved location information for latitude #{latitude} and longitude #{longitude}")
38
- resp
39
- end
40
-
41
- def bounding_box_lookup(lat1: required('lat1'), long1: required('long1'),
42
- lat2: required('lat2'), long2: required('long2'), type: nil)
43
-
44
- fail ArgumentError,
45
- 'lat1, long1, lat2, and long2 need to be numbers' unless lat1.is_a? Numeric and long2.is_a? Numeric\
46
- and lat2.is_a? Numeric and long2.is_a? Numeric
47
- fail ArgumentError, 'type needs to be a string' unless type.nil? or type.is_a? String
48
- url = LOCATION_URL + lat1.to_s + ',' + long1.to_s + ',' + lat2.to_s + ',' + long2.to_s
49
- url += '?type=' + type unless type.nil?
50
- resp = @client.send_request(
51
- method: 'GET',
52
- url: url
53
- )
54
- logger.info("Retrieved location information for bounding box with lat1 #{lat1}, long1 #{long1}," +
55
- " lat2 #{lat2}, and long2 #{long2}")
56
- resp
57
- end
58
-
59
- def alias_lookup(from_alias: required('from_alias'))
60
- fail ArgumentError, 'from_alias needs to be a string or an array of strings' unless from_alias.is_a? String or from_alias.is_a? Array
61
- url = LOCATION_URL + 'from-alias?'
62
- if from_alias.is_a? Array
63
- from_alias.each do |a|
64
- fail ArgumentError, 'from_alias needs to be a string or an array of strings' unless a.is_a? String
65
- url += a + '&'
66
- end
67
- url = url.chop
68
- else
69
- url += from_alias
70
- end
71
-
72
- resp = @client.send_request(
73
- method: 'GET',
74
- url: url
75
- )
76
- logger.info("Retrieved location info from alias #{from_alias}")
77
- resp
78
- end
79
-
80
- def polygon_lookup(polygon_id: required('polygon_id'), zoom: required('zoom'))
81
- fail ArgumentError, 'polygon_id needs to be a string' unless polygon_id.is_a? String
82
- fail ArgumentError, 'zoom needs to be an integer' unless zoom.is_a? Integer
83
-
84
- url = LOCATION_URL + polygon_id + '?zoom=' + zoom.to_s
85
- resp = @client.send_request(
86
- method: 'GET',
87
- url: url
88
- )
89
- logger.info("Retrieved location info for polygon #{polygon_id} and zoom level #{zoom}")
90
- resp
91
- end
92
-
93
- def date_ranges
94
- resp = @client.send_request(
95
- method: 'GET',
96
- url: SEGMENTS_URL + 'dates/'
97
- )
98
- logger.info('Retrieved location date ranges')
99
- resp
100
- end
101
- end
102
- end
103
- end