urbanairship 5.9.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/README.rst +1 -0
- data/lib/urbanairship.rb +4 -0
- data/lib/urbanairship/ab_tests/ab_test.rb +8 -9
- data/lib/urbanairship/automations/automation.rb +11 -11
- data/lib/urbanairship/common.rb +63 -17
- data/lib/urbanairship/configuration.rb +2 -1
- data/lib/urbanairship/custom_events/custom_event.rb +60 -0
- data/lib/urbanairship/custom_events/payload.rb +89 -0
- data/lib/urbanairship/devices/channel_tags.rb +1 -1
- data/lib/urbanairship/devices/channel_uninstall.rb +9 -9
- data/lib/urbanairship/devices/create_and_send.rb +4 -4
- data/lib/urbanairship/devices/devicelist.rb +8 -8
- data/lib/urbanairship/devices/email.rb +5 -5
- data/lib/urbanairship/devices/named_user.rb +6 -6
- data/lib/urbanairship/devices/open_channel.rb +22 -23
- data/lib/urbanairship/devices/segment.rb +5 -5
- data/lib/urbanairship/devices/sms.rb +8 -8
- data/lib/urbanairship/devices/static_lists.rb +7 -7
- data/lib/urbanairship/push/location.rb +7 -7
- data/lib/urbanairship/push/push.rb +5 -5
- data/lib/urbanairship/reports/response_statistics.rb +9 -9
- data/lib/urbanairship/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 169148502585341b7938add240f3595e2124e56228916a1ad73b72f4e457885e
|
4
|
+
data.tar.gz: da1a1067c809c43bed0b0df1ebfc55d28443c2adcb1d5c0c8f3311dbd070b378
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f04b2d733ed47e8bf8779cf3844d67962b0b7815c9450b5112cb706b81e8c8f566660034f21a8762a6ddc9ac6c547e43fdbc11d083e881096bac53315d9f8d2
|
7
|
+
data.tar.gz: fdd59798309c0dca97e596c35684ccab4f1cf04d9ffe7fb72eb6964a5466c126c6d47c236f9b50f784b4b1ba1e5a455b00950353aa9c77ffb62aa48ace89a2ee
|
data/CHANGELOG
CHANGED
data/README.rst
CHANGED
@@ -58,6 +58,7 @@ In your app initialization, you can do something like the following:
|
|
58
58
|
|
59
59
|
>>> require 'urbanairship'
|
60
60
|
>>> Urbanairship.configure do |config|
|
61
|
+
>>> config.server = 'go.airship.eu'
|
61
62
|
>>> config.log_path = '/path/to/your/logfile'
|
62
63
|
>>> config.log_level = Logger::WARN
|
63
64
|
>>> config.timeout = 60
|
data/lib/urbanairship.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'urbanairship/custom_events/payload'
|
1
2
|
require 'urbanairship/push/audience'
|
2
3
|
require 'urbanairship/push/payload'
|
3
4
|
require 'urbanairship/push/schedule'
|
@@ -31,10 +32,13 @@ require 'urbanairship/ab_tests/experiment'
|
|
31
32
|
require 'urbanairship/ab_tests/ab_test'
|
32
33
|
|
33
34
|
module Urbanairship
|
35
|
+
extend Urbanairship::CustomEvents::Payload
|
36
|
+
extend Urbanairship::CustomEvents
|
34
37
|
extend Urbanairship::Push::Audience
|
35
38
|
extend Urbanairship::Push::Payload
|
36
39
|
extend Urbanairship::Push::Schedule
|
37
40
|
extend Urbanairship::Push
|
41
|
+
include Urbanairship::CustomEvents
|
38
42
|
include Urbanairship::Devices
|
39
43
|
include Urbanairship::Reports
|
40
44
|
include Urbanairship::Push
|
@@ -11,7 +11,7 @@ module Urbanairship
|
|
11
11
|
:offset,
|
12
12
|
:experiment_object,
|
13
13
|
:experiment_id
|
14
|
-
|
14
|
+
|
15
15
|
def initialize(client: required('client'))
|
16
16
|
@client = client
|
17
17
|
end
|
@@ -19,7 +19,7 @@ module Urbanairship
|
|
19
19
|
def list_ab_test
|
20
20
|
response = @client.send_request(
|
21
21
|
method: 'GET',
|
22
|
-
url:
|
22
|
+
url: experiments_url(format_url_with_params)
|
23
23
|
)
|
24
24
|
logger.info("Looking up A/B Tests for project")
|
25
25
|
response
|
@@ -29,7 +29,7 @@ module Urbanairship
|
|
29
29
|
response = @client.send_request(
|
30
30
|
method: 'POST',
|
31
31
|
body: JSON.dump(experiment_object),
|
32
|
-
url:
|
32
|
+
url: experiments_url,
|
33
33
|
content_type: 'application/json'
|
34
34
|
)
|
35
35
|
logger.info("Created A/B Test")
|
@@ -39,7 +39,7 @@ module Urbanairship
|
|
39
39
|
def list_scheduled_ab_test
|
40
40
|
response = @client.send_request(
|
41
41
|
method: 'GET',
|
42
|
-
url:
|
42
|
+
url: experiments_url('scheduled' + format_url_with_params)
|
43
43
|
)
|
44
44
|
logger.info("Looking up scheduled A/B Tests for project")
|
45
45
|
response
|
@@ -49,7 +49,7 @@ module Urbanairship
|
|
49
49
|
fail ArgumentError, 'experiment_id must be set to delete individual A/B test' if @experiment_id.nil?
|
50
50
|
response = @client.send_request(
|
51
51
|
method: 'DELETE',
|
52
|
-
url:
|
52
|
+
url: experiments_url('scheduled/' + experiment_id)
|
53
53
|
)
|
54
54
|
logger.info("Deleting A/B test with ID #{experiment_id}")
|
55
55
|
response
|
@@ -59,7 +59,7 @@ module Urbanairship
|
|
59
59
|
response = @client.send_request(
|
60
60
|
method: 'POST',
|
61
61
|
body: JSON.dump(experiment_object),
|
62
|
-
url:
|
62
|
+
url: experiments_url('validate'),
|
63
63
|
content_type: 'application/json'
|
64
64
|
)
|
65
65
|
logger.info("Validating A/B Test")
|
@@ -70,7 +70,7 @@ module Urbanairship
|
|
70
70
|
fail ArgumentError, 'experiment_id must be set to lookup individual A/B Test' if @experiment_id.nil?
|
71
71
|
response = @client.send_request(
|
72
72
|
method: 'GET',
|
73
|
-
url:
|
73
|
+
url: experiments_url(experiment_id)
|
74
74
|
)
|
75
75
|
logger.info("Looking up A/B test with ID #{experiment_id}")
|
76
76
|
response
|
@@ -85,5 +85,4 @@ module Urbanairship
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
88
|
-
end
|
89
|
-
|
88
|
+
end
|
@@ -22,7 +22,7 @@ module Urbanairship
|
|
22
22
|
response = @client.send_request(
|
23
23
|
method: 'POST',
|
24
24
|
body: JSON.dump(pipeline_object),
|
25
|
-
url:
|
25
|
+
url: pipelines_url,
|
26
26
|
content_type: 'application/json'
|
27
27
|
)
|
28
28
|
logger.info("Created Automation")
|
@@ -32,7 +32,7 @@ module Urbanairship
|
|
32
32
|
def list_automations
|
33
33
|
response = @client.send_request(
|
34
34
|
method: 'GET',
|
35
|
-
url:
|
35
|
+
url: pipelines_url(format_url_with_params)
|
36
36
|
)
|
37
37
|
logger.info("Looking up automations for project")
|
38
38
|
response
|
@@ -41,7 +41,7 @@ module Urbanairship
|
|
41
41
|
def list_deleted_automations
|
42
42
|
response = @client.send_request(
|
43
43
|
method: 'GET',
|
44
|
-
url:
|
44
|
+
url: pipelines_url('deleted' + format_url_with_params)
|
45
45
|
)
|
46
46
|
logger.info("Looking up deleted automations for project")
|
47
47
|
response
|
@@ -51,18 +51,18 @@ module Urbanairship
|
|
51
51
|
response = @client.send_request(
|
52
52
|
method: 'POST',
|
53
53
|
body: JSON.dump(pipeline_object),
|
54
|
-
url:
|
54
|
+
url: pipelines_url('validate'),
|
55
55
|
content_type: 'application/json'
|
56
56
|
)
|
57
57
|
logger.info("Validating Automation")
|
58
58
|
response
|
59
59
|
end
|
60
60
|
|
61
|
-
def lookup_automation
|
61
|
+
def lookup_automation
|
62
62
|
fail ArgumentError, 'pipeline_id must be set to lookup individual automation' if @pipeline_id.nil?
|
63
63
|
response = @client.send_request(
|
64
64
|
method: 'GET',
|
65
|
-
url:
|
65
|
+
url: pipelines_url(pipeline_id)
|
66
66
|
)
|
67
67
|
logger.info("Looking up automation with id #{pipeline_id}")
|
68
68
|
response
|
@@ -70,22 +70,22 @@ module Urbanairship
|
|
70
70
|
|
71
71
|
def update_automation
|
72
72
|
fail ArgumentError, 'pipeline_id must be set to update individual automation' if @pipeline_id.nil?
|
73
|
-
|
73
|
+
|
74
74
|
response = @client.send_request(
|
75
75
|
method: 'PUT',
|
76
76
|
body: JSON.dump(pipeline_object),
|
77
|
-
url:
|
77
|
+
url: pipelines_url(pipeline_id),
|
78
78
|
content_type: 'application/json'
|
79
79
|
)
|
80
80
|
logger.info("Validating Automation")
|
81
81
|
response
|
82
82
|
end
|
83
83
|
|
84
|
-
def delete_automation
|
84
|
+
def delete_automation
|
85
85
|
fail ArgumentError, 'pipeline_id must be set to delete individual automation' if @pipeline_id.nil?
|
86
86
|
response = @client.send_request(
|
87
87
|
method: 'DELETE',
|
88
|
-
url:
|
88
|
+
url: pipelines_url(pipeline_id)
|
89
89
|
)
|
90
90
|
logger.info("Deleting automation with id #{pipeline_id}")
|
91
91
|
response
|
@@ -102,4 +102,4 @@ module Urbanairship
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
105
|
-
end
|
105
|
+
end
|
data/lib/urbanairship/common.rb
CHANGED
@@ -4,23 +4,69 @@ require 'urbanairship/loggable'
|
|
4
4
|
module Urbanairship
|
5
5
|
# Features mixed in to all classes
|
6
6
|
module Common
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
7
|
+
def url_for(path)
|
8
|
+
"https://#{Urbanairship.configuration.server}/api#{path}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def apid_url(path='')
|
12
|
+
url_for("/apids/#{path}")
|
13
|
+
end
|
14
|
+
|
15
|
+
def channel_url(path='')
|
16
|
+
url_for("/channels/#{path}")
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_and_send_url(path='')
|
20
|
+
url_for("/create-and-send/#{path}")
|
21
|
+
end
|
22
|
+
|
23
|
+
def custom_events_url(path='')
|
24
|
+
url_for("/custom-events/#{path}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def device_token_url(path='')
|
28
|
+
url_for("/device_tokens/#{path}")
|
29
|
+
end
|
30
|
+
|
31
|
+
def experiments_url(path='')
|
32
|
+
url_for("/experiments/#{path}")
|
33
|
+
end
|
34
|
+
|
35
|
+
def lists_url(path='')
|
36
|
+
url_for("/lists/#{path}")
|
37
|
+
end
|
38
|
+
|
39
|
+
def location_url(path='')
|
40
|
+
url_for("/location/#{path}")
|
41
|
+
end
|
42
|
+
|
43
|
+
def named_users_url(path='')
|
44
|
+
url_for("/named_users/#{path}")
|
45
|
+
end
|
46
|
+
|
47
|
+
def open_channel_url(path='')
|
48
|
+
channel_url("/open/#{path}")
|
49
|
+
end
|
50
|
+
|
51
|
+
def pipelines_url(path='')
|
52
|
+
url_for("/pipelines/#{path}")
|
53
|
+
end
|
54
|
+
|
55
|
+
def push_url(path='')
|
56
|
+
url_for("/push/#{path}")
|
57
|
+
end
|
58
|
+
|
59
|
+
def reports_url(path='')
|
60
|
+
url_for("/reports/#{path}")
|
61
|
+
end
|
62
|
+
|
63
|
+
def schedules_url(path='')
|
64
|
+
url_for("/schedules/#{path}")
|
65
|
+
end
|
66
|
+
|
67
|
+
def segments_url(path='')
|
68
|
+
url_for("/segments/#{path}")
|
69
|
+
end
|
24
70
|
|
25
71
|
# Helper method for required keyword args in Ruby 2.0 that is compatible with 2.1+
|
26
72
|
# @example
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module Urbanairship
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :custom_logger, :log_path, :log_level, :timeout
|
3
|
+
attr_accessor :custom_logger, :log_path, :log_level, :server, :timeout
|
4
4
|
|
5
5
|
def initialize
|
6
|
+
@server = 'go.urbanairship.com'
|
6
7
|
@custom_logger = nil
|
7
8
|
@log_path = nil
|
8
9
|
@log_level = Logger::INFO
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'urbanairship'
|
3
|
+
require 'urbanairship/common'
|
4
|
+
require 'urbanairship/loggable'
|
5
|
+
|
6
|
+
module Urbanairship
|
7
|
+
module CustomEvents
|
8
|
+
class CustomEvent
|
9
|
+
include Urbanairship::Common
|
10
|
+
include Urbanairship::Loggable
|
11
|
+
|
12
|
+
attr_accessor :events
|
13
|
+
|
14
|
+
def initialize(client: required('client'))
|
15
|
+
@client = client
|
16
|
+
end
|
17
|
+
|
18
|
+
def create
|
19
|
+
fail ArgumentError, 'events must be an array of custom events' unless events.is_a?(Array)
|
20
|
+
|
21
|
+
response = @client.send_request(
|
22
|
+
auth_type: :bearer,
|
23
|
+
body: JSON.dump(events),
|
24
|
+
content_type: 'application/json',
|
25
|
+
method: 'POST',
|
26
|
+
url: custom_events_url
|
27
|
+
)
|
28
|
+
cer = CustomEventResponse.new(body: response['body'], code: response['code'])
|
29
|
+
logger.info { cer.format }
|
30
|
+
|
31
|
+
cer
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Response to a successful custom event creation.
|
36
|
+
class CustomEventResponse
|
37
|
+
attr_reader :ok, :operation_id, :payload, :status_code
|
38
|
+
|
39
|
+
def initialize(body: nil, code: nil)
|
40
|
+
@payload = (body.nil? || body.empty?) ? {} : body
|
41
|
+
@ok = payload['ok']
|
42
|
+
@operation_id = payload['operationId']
|
43
|
+
@status_code = code
|
44
|
+
end
|
45
|
+
|
46
|
+
# String Formatting of the CustomEventResponse
|
47
|
+
#
|
48
|
+
# @return [Object] String Formatted CustomEventResponse
|
49
|
+
def format
|
50
|
+
"Received [#{status_code}] response code.\nBody:\n#{formatted_body}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def formatted_body
|
54
|
+
payload
|
55
|
+
.map { |key, value| "#{key}:\t#{value.to_s || 'None'}" }
|
56
|
+
.join("\n")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'urbanairship'
|
2
|
+
require 'urbanairship/common'
|
3
|
+
|
4
|
+
module Urbanairship
|
5
|
+
module CustomEvents
|
6
|
+
module Payload
|
7
|
+
include Urbanairship::Common
|
8
|
+
|
9
|
+
def custom_events(
|
10
|
+
body: required('body'),
|
11
|
+
occurred: required('occurred'),
|
12
|
+
user: required('user')
|
13
|
+
)
|
14
|
+
compact_helper({
|
15
|
+
body: body,
|
16
|
+
occurred: format_timestamp(occurred),
|
17
|
+
user: user
|
18
|
+
})
|
19
|
+
end
|
20
|
+
|
21
|
+
# Body specific portion of CustomEvent Object
|
22
|
+
def custom_events_body(
|
23
|
+
interaction_id: nil, interaction_type: nil, name: required('name'),
|
24
|
+
properties: nil, session_id: nil, transaction: nil, value: nil
|
25
|
+
)
|
26
|
+
|
27
|
+
validates_name_format(name)
|
28
|
+
validates_value_format(value)
|
29
|
+
|
30
|
+
compact_helper({
|
31
|
+
interaction_id: interaction_id,
|
32
|
+
interaction_type: interaction_type,
|
33
|
+
name: name,
|
34
|
+
properties: properties,
|
35
|
+
session_id: session_id,
|
36
|
+
transaction: transaction,
|
37
|
+
value: value
|
38
|
+
})
|
39
|
+
end
|
40
|
+
|
41
|
+
# User specific portion of CustomEvent Object
|
42
|
+
def custom_events_user(
|
43
|
+
amazon_channel: nil, android_channel: nil, channel: nil,
|
44
|
+
ios_channel: nil, named_user_id: nil, web_channel: nil
|
45
|
+
)
|
46
|
+
res = compact_helper({
|
47
|
+
amazon_channel: amazon_channel,
|
48
|
+
android_channel: android_channel,
|
49
|
+
channel: channel,
|
50
|
+
ios_channel: ios_channel,
|
51
|
+
named_user_id: named_user_id,
|
52
|
+
web_channel: web_channel,
|
53
|
+
})
|
54
|
+
|
55
|
+
fail ArgumentError, 'at least one user identifier must be defined' if res.empty?
|
56
|
+
|
57
|
+
res
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
# Formatters
|
62
|
+
# ------------------------------------------------------------------------
|
63
|
+
|
64
|
+
def format_timestamp(timestamp)
|
65
|
+
return timestamp if timestamp.is_a?(String)
|
66
|
+
|
67
|
+
timestamp.strftime('%Y-%m-%dT%H:%M:%S')
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
# Validators
|
72
|
+
# ------------------------------------------------------------------------
|
73
|
+
|
74
|
+
NAME_REGEX = /^[a-z0-9_\-]+$/
|
75
|
+
def validates_name_format(name)
|
76
|
+
return if name =~ NAME_REGEX
|
77
|
+
|
78
|
+
fail ArgumentError, 'invalid "name": it must follows this pattern /^[a-z0-9_\-]+$/'
|
79
|
+
end
|
80
|
+
|
81
|
+
def validates_value_format(value)
|
82
|
+
return if value.nil?
|
83
|
+
return if value.is_a?(Numeric)
|
84
|
+
|
85
|
+
fail ArgumentError, 'invalid "value": must be a number'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -23,7 +23,7 @@ module Urbanairship
|
|
23
23
|
response = @client.send_request(
|
24
24
|
method: 'POST',
|
25
25
|
body: JSON.dump(channels),
|
26
|
-
url:
|
26
|
+
url: channel_url('uninstall/'),
|
27
27
|
content_type: 'application/json'
|
28
28
|
)
|
29
29
|
|
@@ -31,32 +31,32 @@ module Urbanairship
|
|
31
31
|
response
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
35
|
-
|
34
|
+
|
35
|
+
|
36
36
|
class OpenChannelUninstall
|
37
37
|
include Urbanairship::Common
|
38
38
|
include Urbanairship::Loggable
|
39
39
|
attr_reader :client
|
40
|
-
|
40
|
+
|
41
41
|
def initialize(client: required('client'))
|
42
42
|
@client = client
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def uninstall(address: required('address'),
|
46
46
|
open_platform: required('open_platform'))
|
47
|
-
|
47
|
+
|
48
48
|
body = {
|
49
49
|
address: address,
|
50
50
|
open_platform_name: open_platform
|
51
51
|
}
|
52
|
-
|
52
|
+
|
53
53
|
response = @client.send_request(
|
54
54
|
method: 'POST',
|
55
55
|
body: JSON.dump(body),
|
56
|
-
url:
|
56
|
+
url: open_channel_url('uninstall/'),
|
57
57
|
content_type: 'application/json'
|
58
58
|
)
|
59
|
-
|
59
|
+
|
60
60
|
logger.info { "Successfully uninstalled open channel with address: #{address}"}
|
61
61
|
response
|
62
62
|
end
|
@@ -44,7 +44,7 @@ module Urbanairship
|
|
44
44
|
campaign_object = {'categories': campaigns}
|
45
45
|
full_payload[:campaigns] = campaign_object
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
full_payload
|
49
49
|
end
|
50
50
|
|
@@ -52,7 +52,7 @@ module Urbanairship
|
|
52
52
|
response = @client.send_request(
|
53
53
|
method: 'POST',
|
54
54
|
body: JSON.dump(payload),
|
55
|
-
url:
|
55
|
+
url: create_and_send_url,
|
56
56
|
content_type: 'application/json'
|
57
57
|
)
|
58
58
|
logger.info("Running create and send for addresses #{@addresses}")
|
@@ -63,7 +63,7 @@ module Urbanairship
|
|
63
63
|
response = @client.send_request(
|
64
64
|
method: 'POST',
|
65
65
|
body: JSON.dump(payload),
|
66
|
-
url:
|
66
|
+
url: create_and_send_url('validate'),
|
67
67
|
content_type: 'application/json'
|
68
68
|
)
|
69
69
|
logger.info("Validating payload for create and send")
|
@@ -84,7 +84,7 @@ module Urbanairship
|
|
84
84
|
response = @client.send_request(
|
85
85
|
method: 'POST',
|
86
86
|
body: JSON.dump(scheduled_payload),
|
87
|
-
url:
|
87
|
+
url: schedules_url('create-and-send'),
|
88
88
|
content_type: 'application/json'
|
89
89
|
)
|
90
90
|
logger.info("Scheduling create and send operation with name #{@name}")
|
@@ -17,7 +17,7 @@ module Urbanairship
|
|
17
17
|
def lookup(uuid: required('uuid'))
|
18
18
|
response = @client.send_request(
|
19
19
|
method: 'GET',
|
20
|
-
url:
|
20
|
+
url: channel_url(uuid)
|
21
21
|
)
|
22
22
|
logger.info("Retrieved channel information for #{uuid}")
|
23
23
|
response['body']['channel']
|
@@ -36,7 +36,7 @@ module Urbanairship
|
|
36
36
|
response = @client.send_request(
|
37
37
|
method: 'POST',
|
38
38
|
body: JSON.dump(payload),
|
39
|
-
url:
|
39
|
+
url: channel_url('attributes'),
|
40
40
|
content_type: 'application/json'
|
41
41
|
)
|
42
42
|
response
|
@@ -46,7 +46,7 @@ module Urbanairship
|
|
46
46
|
class ChannelList < Urbanairship::Common::PageIterator
|
47
47
|
def initialize(client: required('client'))
|
48
48
|
super(client: client)
|
49
|
-
@next_page =
|
49
|
+
@next_page = channel_url
|
50
50
|
@data_attribute = 'channels'
|
51
51
|
end
|
52
52
|
end
|
@@ -64,7 +64,7 @@ module Urbanairship
|
|
64
64
|
|
65
65
|
resp = @client.send_request(
|
66
66
|
method: 'GET',
|
67
|
-
url:
|
67
|
+
url: device_token_url(token)
|
68
68
|
)
|
69
69
|
logger.info("Looking up info on device token #{token}")
|
70
70
|
resp
|
@@ -77,7 +77,7 @@ module Urbanairship
|
|
77
77
|
|
78
78
|
def initialize(client: required('client'))
|
79
79
|
super(client: client)
|
80
|
-
@next_page =
|
80
|
+
@next_page = device_token_url
|
81
81
|
@data_attribute = 'device_tokens'
|
82
82
|
end
|
83
83
|
end
|
@@ -95,7 +95,7 @@ module Urbanairship
|
|
95
95
|
|
96
96
|
resp = @client.send_request(
|
97
97
|
method: 'GET',
|
98
|
-
url:
|
98
|
+
url: apid_url(apid)
|
99
99
|
)
|
100
100
|
logger.info("Retrieved info on apid #{apid}")
|
101
101
|
resp
|
@@ -105,9 +105,9 @@ module Urbanairship
|
|
105
105
|
class APIDList < Urbanairship::Common::PageIterator
|
106
106
|
def initialize(client: required('client'))
|
107
107
|
super(client: client)
|
108
|
-
@next_page =
|
108
|
+
@next_page = apid_url
|
109
109
|
@data_attribute = 'apids'
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
113
|
-
end
|
113
|
+
end
|
@@ -41,7 +41,7 @@ module Urbanairship
|
|
41
41
|
response = @client.send_request(
|
42
42
|
method: 'POST',
|
43
43
|
body: JSON.dump(payload),
|
44
|
-
url:
|
44
|
+
url: channel_url('email'),
|
45
45
|
content_type: 'application/json'
|
46
46
|
)
|
47
47
|
logger.info("Registering email channel with address #{address}")
|
@@ -58,7 +58,7 @@ module Urbanairship
|
|
58
58
|
response = @client.send_request(
|
59
59
|
method: 'POST',
|
60
60
|
body: JSON.dump(payload),
|
61
|
-
url:
|
61
|
+
url: channel_url('email/uninstall'),
|
62
62
|
content_type: 'application/json'
|
63
63
|
)
|
64
64
|
logger.info("Uninstalling email channel with address #{address}")
|
@@ -70,7 +70,7 @@ module Urbanairship
|
|
70
70
|
|
71
71
|
response = @client.send_request(
|
72
72
|
method: 'GET',
|
73
|
-
url:
|
73
|
+
url: channel_url('email/' + address)
|
74
74
|
)
|
75
75
|
logger.info("Looking up email channel with address #{address}")
|
76
76
|
response
|
@@ -95,7 +95,7 @@ module Urbanairship
|
|
95
95
|
|
96
96
|
response = @client.send_request(
|
97
97
|
method: 'PUT',
|
98
|
-
url:
|
98
|
+
url: channel_url('email/' + channel_id),
|
99
99
|
body: JSON.dump(payload),
|
100
100
|
content_type: 'application/json'
|
101
101
|
)
|
@@ -109,7 +109,7 @@ module Urbanairship
|
|
109
109
|
|
110
110
|
def initialize(client: required('client'))
|
111
111
|
super(client: client)
|
112
|
-
@url =
|
112
|
+
@url = channel_url('email/tags')
|
113
113
|
end
|
114
114
|
|
115
115
|
def set_audience(email_address: required('email_address'))
|
@@ -25,7 +25,7 @@ module Urbanairship
|
|
25
25
|
response = @client.send_request(
|
26
26
|
method: 'POST',
|
27
27
|
body: JSON.dump(payload),
|
28
|
-
url:
|
28
|
+
url: named_users_url('/associate'),
|
29
29
|
content_type: 'application/json'
|
30
30
|
)
|
31
31
|
logger.info { "Associated channel_id #{channel_id} with named_user #{@named_user_id}" }
|
@@ -40,7 +40,7 @@ module Urbanairship
|
|
40
40
|
response = @client.send_request(
|
41
41
|
method: 'POST',
|
42
42
|
body: JSON.dump(payload),
|
43
|
-
url:
|
43
|
+
url: named_users_url('/disassociate'),
|
44
44
|
content_type: 'application/json'
|
45
45
|
)
|
46
46
|
logger.info { "Dissociated channel_id #{channel_id}" }
|
@@ -52,7 +52,7 @@ module Urbanairship
|
|
52
52
|
'named_user_id is required for lookup' if @named_user_id.nil?
|
53
53
|
response = @client.send_request(
|
54
54
|
method: 'GET',
|
55
|
-
url:
|
55
|
+
url: named_users_url('?id=' + @named_user_id),
|
56
56
|
)
|
57
57
|
logger.info { "Retrieved information on named_user_id #{@named_user_id}" }
|
58
58
|
response
|
@@ -65,7 +65,7 @@ module Urbanairship
|
|
65
65
|
|
66
66
|
def initialize(client: required('client'))
|
67
67
|
super(client: client)
|
68
|
-
@url =
|
68
|
+
@url = named_users_url('tags/')
|
69
69
|
end
|
70
70
|
|
71
71
|
def set_audience(user_ids: required('user_ids'))
|
@@ -79,7 +79,7 @@ module Urbanairship
|
|
79
79
|
|
80
80
|
def initialize(client: required('client'))
|
81
81
|
super(client: client)
|
82
|
-
@next_page =
|
82
|
+
@next_page = named_users_url
|
83
83
|
@data_attribute = 'named_users'
|
84
84
|
end
|
85
85
|
end
|
@@ -101,7 +101,7 @@ module Urbanairship
|
|
101
101
|
response = @client.send_request(
|
102
102
|
method: 'POST',
|
103
103
|
body: JSON.dump(payload),
|
104
|
-
url:
|
104
|
+
url: named_users_url('/uninstall'),
|
105
105
|
content_type: 'application/json'
|
106
106
|
)
|
107
107
|
logger.info { "Uninstalled named_user_ids #{@named_user_ids} " }
|
@@ -5,11 +5,11 @@ module Urbanairship
|
|
5
5
|
class OpenChannel
|
6
6
|
include Urbanairship::Common
|
7
7
|
include Urbanairship::Loggable
|
8
|
-
attr_accessor :channel_id,
|
9
|
-
:open_platform,
|
10
|
-
:opt_in,
|
8
|
+
attr_accessor :channel_id,
|
9
|
+
:open_platform,
|
10
|
+
:opt_in,
|
11
11
|
:address,
|
12
|
-
:tags,
|
12
|
+
:tags,
|
13
13
|
:identifiers,
|
14
14
|
:template_id,
|
15
15
|
:alert,
|
@@ -21,16 +21,16 @@ module Urbanairship
|
|
21
21
|
:fields,
|
22
22
|
:interactive,
|
23
23
|
:platform_alert
|
24
|
-
|
24
|
+
|
25
25
|
def initialize(client: required('client'))
|
26
26
|
@client = client
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def create()
|
30
30
|
fail TypeError, 'address must be set to create open channel' unless address.is_a? String
|
31
31
|
fail TypeError, 'open_platform must be set to create open channel' unless open_platform.is_a? String
|
32
32
|
fail TypeError, 'opt_in must be boolean' unless [true, false].include? opt_in
|
33
|
-
|
33
|
+
|
34
34
|
channel_data = {
|
35
35
|
'type': 'open',
|
36
36
|
'open': {:open_platform_name => open_platform},
|
@@ -38,21 +38,21 @@ module Urbanairship
|
|
38
38
|
'address': address,
|
39
39
|
'tags': tags
|
40
40
|
}.delete_if {|key, value| value.nil?} #this removes the nil key value pairs
|
41
|
-
|
41
|
+
|
42
42
|
set_identifiers
|
43
|
-
|
43
|
+
|
44
44
|
body = {'channel': channel_data}
|
45
|
-
|
45
|
+
|
46
46
|
response = @client.send_request(
|
47
47
|
method: 'POST',
|
48
|
-
url:
|
48
|
+
url: open_channel_url,
|
49
49
|
body: JSON.dump(body),
|
50
50
|
content_type: 'application/json'
|
51
51
|
)
|
52
52
|
logger.info("Registering open channel with address: #{address}")
|
53
53
|
response
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
def update(set_tags: required('set_tags'))
|
57
57
|
fail ArgumentError, 'set_tags must be boolean' unless [true, false].include? set_tags
|
58
58
|
fail ArgumentError, 'set_tags cannot be true when tags are not set' unless set_tags == true && tags != nil
|
@@ -60,7 +60,7 @@ module Urbanairship
|
|
60
60
|
fail TypeError, 'address or channel_id must not be nil' unless address.is_a? String || channel_id.is_a?(String)
|
61
61
|
fail TypeError, 'open_platform cannot be nil' unless open_platform.is_a? String
|
62
62
|
fail TypeErorr, 'address must not be nil if opt_in is true' unless opt_in.is_a? TrueClass
|
63
|
-
|
63
|
+
|
64
64
|
channel_data = {
|
65
65
|
'type': 'open',
|
66
66
|
'open': {'open_platform_name': open_platform},
|
@@ -70,34 +70,34 @@ module Urbanairship
|
|
70
70
|
'address': address,
|
71
71
|
'tags': tags
|
72
72
|
}.delete_if {|key, value| value.nil?} #this removes the nil key value pairs
|
73
|
-
|
73
|
+
|
74
74
|
set_identifiers
|
75
|
-
|
75
|
+
|
76
76
|
body = {'channel': channel_data}
|
77
|
-
|
77
|
+
|
78
78
|
response = @client.send_request(
|
79
79
|
method: 'POST',
|
80
|
-
url:
|
80
|
+
url: open_channel_url,
|
81
81
|
body: JSON.dump(body),
|
82
82
|
content_type: 'application/json'
|
83
83
|
)
|
84
84
|
logger.info("Updating open channel with address #{address}")
|
85
85
|
response
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
def lookup(channel_id: required('channel_id'))
|
89
89
|
fail ArgumentError, 'channel_id needs to be a string' unless channel_id.is_a? String
|
90
|
-
|
90
|
+
|
91
91
|
response = @client.send_request(
|
92
92
|
method: 'GET',
|
93
|
-
url:
|
93
|
+
url: channel_url(channel_id)
|
94
94
|
)
|
95
95
|
logger.info("Looking up info on device token #{channel_id}")
|
96
96
|
response
|
97
97
|
end
|
98
98
|
|
99
99
|
def notification_with_template_id
|
100
|
-
fail TypeError, 'open_platform cannot be nil' if open_platform.nil?
|
100
|
+
fail TypeError, 'open_platform cannot be nil' if open_platform.nil?
|
101
101
|
|
102
102
|
if alert
|
103
103
|
payload = {
|
@@ -124,7 +124,7 @@ module Urbanairship
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def open_channel_override
|
127
|
-
fail TypeError, 'open_platform cannot be nil' if open_platform.nil?
|
127
|
+
fail TypeError, 'open_platform cannot be nil' if open_platform.nil?
|
128
128
|
payload = {
|
129
129
|
'alert': platform_alert,
|
130
130
|
'extra': extra,
|
@@ -147,4 +147,3 @@ module Urbanairship
|
|
147
147
|
end
|
148
148
|
end
|
149
149
|
end
|
150
|
-
|
@@ -28,7 +28,7 @@ module Urbanairship
|
|
28
28
|
response = @client.send_request(
|
29
29
|
method: 'POST',
|
30
30
|
body: JSON.dump(payload),
|
31
|
-
url:
|
31
|
+
url: segments_url,
|
32
32
|
content_type: 'application/json'
|
33
33
|
)
|
34
34
|
logger.info { "Successful segment creation: #{@display_name}" }
|
@@ -45,7 +45,7 @@ module Urbanairship
|
|
45
45
|
'id must be set to a valid string' if id.nil?
|
46
46
|
response = @client.send_request(
|
47
47
|
method: 'GET',
|
48
|
-
url:
|
48
|
+
url: segments_url(id)
|
49
49
|
)
|
50
50
|
logger.info("Retrieved segment information for #{id}")
|
51
51
|
@id = id
|
@@ -69,7 +69,7 @@ module Urbanairship
|
|
69
69
|
response = @client.send_request(
|
70
70
|
method: 'PUT',
|
71
71
|
body: JSON.dump(data),
|
72
|
-
url:
|
72
|
+
url: segments_url(@id),
|
73
73
|
content_type: 'application/json'
|
74
74
|
)
|
75
75
|
logger.info { "Successful segment update: #{@display_name}" }
|
@@ -83,7 +83,7 @@ module Urbanairship
|
|
83
83
|
fail ArgumentError,
|
84
84
|
'id cannot be nil' if id.nil?
|
85
85
|
|
86
|
-
url =
|
86
|
+
url = segments_url(id)
|
87
87
|
response = @client.send_request(
|
88
88
|
method: 'DELETE',
|
89
89
|
url: url
|
@@ -98,7 +98,7 @@ module Urbanairship
|
|
98
98
|
|
99
99
|
def initialize(client: required('client'))
|
100
100
|
super(client: client)
|
101
|
-
@next_page =
|
101
|
+
@next_page = segments_url
|
102
102
|
@data_attribute = 'segments'
|
103
103
|
end
|
104
104
|
end
|
@@ -5,9 +5,9 @@ module Urbanairship
|
|
5
5
|
class Sms
|
6
6
|
include Urbanairship::Common
|
7
7
|
include Urbanairship::Loggable
|
8
|
-
attr_accessor :msisdn,
|
9
|
-
:sender,
|
10
|
-
:opted_in,
|
8
|
+
attr_accessor :msisdn,
|
9
|
+
:sender,
|
10
|
+
:opted_in,
|
11
11
|
:sender,
|
12
12
|
:locale_country,
|
13
13
|
:locale_language,
|
@@ -31,7 +31,7 @@ module Urbanairship
|
|
31
31
|
response = @client.send_request(
|
32
32
|
method: 'POST',
|
33
33
|
body: JSON.dump(payload),
|
34
|
-
url:
|
34
|
+
url: channel_url('sms'),
|
35
35
|
content_type: 'application/json'
|
36
36
|
)
|
37
37
|
logger.info("Registering SMS channel with msisdn #{@msisdn}")
|
@@ -55,7 +55,7 @@ module Urbanairship
|
|
55
55
|
response = @client.send_request(
|
56
56
|
method: 'PUT',
|
57
57
|
body: JSON.dump(payload),
|
58
|
-
url:
|
58
|
+
url: channel_url('sms/' + channel_id),
|
59
59
|
content_type: 'application/json'
|
60
60
|
)
|
61
61
|
logger.info("Updating SMS channel with msisdn #{@channel_id}")
|
@@ -74,7 +74,7 @@ module Urbanairship
|
|
74
74
|
response = @client.send_request(
|
75
75
|
method: 'POST',
|
76
76
|
body: JSON.dump(payload),
|
77
|
-
url:
|
77
|
+
url: channel_url('sms/opt-out'),
|
78
78
|
content_type: 'application/json'
|
79
79
|
)
|
80
80
|
logger.info("Opting Out of SMS messages for #{@msisdn}")
|
@@ -93,7 +93,7 @@ module Urbanairship
|
|
93
93
|
response = @client.send_request(
|
94
94
|
method: 'POST',
|
95
95
|
body: JSON.dump(payload),
|
96
|
-
url:
|
96
|
+
url: channel_url('sms/uninstall'),
|
97
97
|
content_type: 'application/json'
|
98
98
|
)
|
99
99
|
logger.info("Uninstalling SMS channel for #{@msisdn}")
|
@@ -106,7 +106,7 @@ module Urbanairship
|
|
106
106
|
|
107
107
|
response = @client.send_request(
|
108
108
|
method: 'GET',
|
109
|
-
url:
|
109
|
+
url: channel_url('sms/' + @msisdn + '/' + @sender)
|
110
110
|
)
|
111
111
|
logger.info { "Retrieved information for msisdn #{@msisdn}" }
|
112
112
|
response
|
@@ -22,7 +22,7 @@ module Urbanairship
|
|
22
22
|
response = @client.send_request(
|
23
23
|
method: 'POST',
|
24
24
|
body: JSON.dump(payload),
|
25
|
-
url:
|
25
|
+
url: lists_url,
|
26
26
|
content_type: 'application/json'
|
27
27
|
)
|
28
28
|
logger.info("Created static list for #{@name}")
|
@@ -35,7 +35,7 @@ module Urbanairship
|
|
35
35
|
response = @client.send_request(
|
36
36
|
method: 'PUT',
|
37
37
|
body: csv_file,
|
38
|
-
url:
|
38
|
+
url: lists_url(@name + '/csv/'),
|
39
39
|
content_type: 'text/csv',
|
40
40
|
encoding: gzip
|
41
41
|
)
|
@@ -43,7 +43,7 @@ module Urbanairship
|
|
43
43
|
response = @client.send_request(
|
44
44
|
method: 'PUT',
|
45
45
|
body: csv_file,
|
46
|
-
url:
|
46
|
+
url: lists_url(@name + '/csv/'),
|
47
47
|
content_type: 'text/csv'
|
48
48
|
)
|
49
49
|
end
|
@@ -61,7 +61,7 @@ module Urbanairship
|
|
61
61
|
response = @client.send_request(
|
62
62
|
method: 'PUT',
|
63
63
|
body: JSON.dump(payload),
|
64
|
-
url:
|
64
|
+
url: lists_url(@name),
|
65
65
|
content_type: 'application/json'
|
66
66
|
)
|
67
67
|
logger.info("Updating the metadata for list #{@name}")
|
@@ -72,7 +72,7 @@ module Urbanairship
|
|
72
72
|
fail ArgumentError, 'Name must be set' if name.nil?
|
73
73
|
response = @client.send_request(
|
74
74
|
method: 'GET',
|
75
|
-
url:
|
75
|
+
url: lists_url(@name)
|
76
76
|
)
|
77
77
|
logger.info("Retrieving info for list #{@name}")
|
78
78
|
response
|
@@ -82,7 +82,7 @@ module Urbanairship
|
|
82
82
|
fail ArgumentError, 'Name must be set' if name.nil?
|
83
83
|
response = @client.send_request(
|
84
84
|
method: 'DELETE',
|
85
|
-
url:
|
85
|
+
url: lists_url(@name)
|
86
86
|
)
|
87
87
|
logger.info("Deleted list #{@name}")
|
88
88
|
response
|
@@ -92,7 +92,7 @@ module Urbanairship
|
|
92
92
|
class StaticLists < Urbanairship::Common::PageIterator
|
93
93
|
def initialize(client: required('client'))
|
94
94
|
super(client: client)
|
95
|
-
@next_page =
|
95
|
+
@next_page = lists_url
|
96
96
|
@data_attribute = 'lists'
|
97
97
|
end
|
98
98
|
end
|
@@ -14,7 +14,7 @@ module Urbanairship
|
|
14
14
|
def name_lookup(name: required('name'), type: nil)
|
15
15
|
fail ArgumentError, 'name needs to be a string' unless name.is_a? String
|
16
16
|
fail ArgumentError, 'type needs to be a string' unless type.nil? or type.is_a? String
|
17
|
-
url =
|
17
|
+
url = location_url('?q=' + name)
|
18
18
|
url += '&type=' + type unless type.nil?
|
19
19
|
resp = @client.send_request(
|
20
20
|
method: 'GET',
|
@@ -28,7 +28,7 @@ module Urbanairship
|
|
28
28
|
fail ArgumentError,
|
29
29
|
'latitude and longitude need to be numbers' unless latitude.is_a? Numeric and longitude.is_a? Numeric
|
30
30
|
fail ArgumentError, 'type needs to be a string' unless type.nil? or type.is_a? String
|
31
|
-
url =
|
31
|
+
url = location_url(latitude.to_s + ',' + longitude.to_s)
|
32
32
|
url += '?type=' + type unless type.nil?
|
33
33
|
resp = @client.send_request(
|
34
34
|
method: 'GET',
|
@@ -45,7 +45,7 @@ module Urbanairship
|
|
45
45
|
'lat1, long1, lat2, and long2 need to be numbers' unless lat1.is_a? Numeric and long2.is_a? Numeric\
|
46
46
|
and lat2.is_a? Numeric and long2.is_a? Numeric
|
47
47
|
fail ArgumentError, 'type needs to be a string' unless type.nil? or type.is_a? String
|
48
|
-
url =
|
48
|
+
url = location_url(lat1.to_s + ',' + long1.to_s + ',' + lat2.to_s + ',' + long2.to_s)
|
49
49
|
url += '?type=' + type unless type.nil?
|
50
50
|
resp = @client.send_request(
|
51
51
|
method: 'GET',
|
@@ -58,7 +58,7 @@ module Urbanairship
|
|
58
58
|
|
59
59
|
def alias_lookup(from_alias: required('from_alias'))
|
60
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 =
|
61
|
+
url = location_url('from-alias?')
|
62
62
|
if from_alias.is_a? Array
|
63
63
|
from_alias.each do |a|
|
64
64
|
fail ArgumentError, 'from_alias needs to be a string or an array of strings' unless a.is_a? String
|
@@ -81,7 +81,7 @@ module Urbanairship
|
|
81
81
|
fail ArgumentError, 'polygon_id needs to be a string' unless polygon_id.is_a? String
|
82
82
|
fail ArgumentError, 'zoom needs to be an integer' unless zoom.is_a? Integer
|
83
83
|
|
84
|
-
url =
|
84
|
+
url = location_url(polygon_id + '?zoom=' + zoom.to_s)
|
85
85
|
resp = @client.send_request(
|
86
86
|
method: 'GET',
|
87
87
|
url: url
|
@@ -93,11 +93,11 @@ module Urbanairship
|
|
93
93
|
def date_ranges
|
94
94
|
resp = @client.send_request(
|
95
95
|
method: 'GET',
|
96
|
-
url:
|
96
|
+
url: segments_url('dates/')
|
97
97
|
)
|
98
98
|
logger.info('Retrieved location date ranges')
|
99
99
|
resp
|
100
100
|
end
|
101
101
|
end
|
102
102
|
end
|
103
|
-
end
|
103
|
+
end
|
@@ -10,7 +10,7 @@ module Urbanairship
|
|
10
10
|
class Push
|
11
11
|
attr_writer :client
|
12
12
|
|
13
|
-
attr_accessor :device_types,
|
13
|
+
attr_accessor :device_types,
|
14
14
|
:audience,
|
15
15
|
:notification,
|
16
16
|
:options,
|
@@ -52,7 +52,7 @@ module Urbanairship
|
|
52
52
|
response = @client.send_request(
|
53
53
|
method: 'POST',
|
54
54
|
body: JSON.dump(payload),
|
55
|
-
url:
|
55
|
+
url: push_url,
|
56
56
|
content_type: 'application/json'
|
57
57
|
)
|
58
58
|
pr = PushResponse.new(http_response_body: response['body'], http_response_code: response['code'].to_s)
|
@@ -93,7 +93,7 @@ module Urbanairship
|
|
93
93
|
response = @client.send_request(
|
94
94
|
method: 'POST',
|
95
95
|
body: JSON.dump(payload),
|
96
|
-
url:
|
96
|
+
url: schedules_url,
|
97
97
|
content_type: 'application/json'
|
98
98
|
)
|
99
99
|
pr = PushResponse.new(http_response_body: response['body'], http_response_code: response['code'].to_s)
|
@@ -170,7 +170,7 @@ module Urbanairship
|
|
170
170
|
'schedule_id must be a string' unless schedule_id.is_a? String
|
171
171
|
resp = @client.send_request(
|
172
172
|
method: 'GET',
|
173
|
-
url:
|
173
|
+
url: schedules_url(schedule_id)
|
174
174
|
)
|
175
175
|
logger.info("Retrieved info for schedule_id #{schedule_id}")
|
176
176
|
resp
|
@@ -181,7 +181,7 @@ module Urbanairship
|
|
181
181
|
class ScheduledPushList < Urbanairship::Common::PageIterator
|
182
182
|
def initialize(client: required('client'))
|
183
183
|
super(client: client)
|
184
|
-
@next_page =
|
184
|
+
@next_page = schedules_url
|
185
185
|
@data_attribute = 'schedules'
|
186
186
|
end
|
187
187
|
end
|
@@ -35,7 +35,7 @@ module Urbanairship
|
|
35
35
|
fail ArgumentError,
|
36
36
|
'push_id cannot be nil' if push_id.nil?
|
37
37
|
|
38
|
-
url =
|
38
|
+
url = reports_url('responses/' + push_id)
|
39
39
|
response = @client.send_request(method: 'GET', url: url)
|
40
40
|
logger.info("Retrieved info on push_id: #{push_id}")
|
41
41
|
response
|
@@ -60,7 +60,7 @@ module Urbanairship
|
|
60
60
|
fail ArgumentError,
|
61
61
|
'start_date and end_date must be valid date strings'
|
62
62
|
end
|
63
|
-
url =
|
63
|
+
url = reports_url('responses/list?start=' + start_parsed.iso8601 + '&end=' + end_parsed.iso8601)
|
64
64
|
url += '&limit' + limit.to_s unless limit.nil?
|
65
65
|
url += '&push_id_start&' + push_id_start unless push_id_start.nil?
|
66
66
|
@next_page = url
|
@@ -87,7 +87,7 @@ module Urbanairship
|
|
87
87
|
end
|
88
88
|
response = @client.send_request(
|
89
89
|
method: 'GET',
|
90
|
-
url:
|
90
|
+
url: reports_url('devices/?date=' + date_parsed.iso8601)
|
91
91
|
)
|
92
92
|
logger.info("Retrieved device report for date #{date}")
|
93
93
|
response
|
@@ -99,7 +99,7 @@ module Urbanairship
|
|
99
99
|
end_date: required('end_date'), precision: required('precision'))
|
100
100
|
super(client: client)
|
101
101
|
url = Helper.new.get_url(start_date, end_date, precision)
|
102
|
-
@next_page =
|
102
|
+
@next_page = reports_url('optins/' + url)
|
103
103
|
@data_attribute = 'optins'
|
104
104
|
end
|
105
105
|
end
|
@@ -109,7 +109,7 @@ module Urbanairship
|
|
109
109
|
end_date: required('end_date'), precision: required('precision'))
|
110
110
|
super(client: client)
|
111
111
|
url = Helper.new.get_url(start_date, end_date, precision)
|
112
|
-
@next_page =
|
112
|
+
@next_page = reports_url('optouts/' + url)
|
113
113
|
@data_attribute = 'optouts'
|
114
114
|
end
|
115
115
|
end
|
@@ -119,7 +119,7 @@ module Urbanairship
|
|
119
119
|
end_date: required('end_date'), precision: required('precision'))
|
120
120
|
super(client: client)
|
121
121
|
url = Helper.new.get_url(start_date, end_date, precision)
|
122
|
-
@next_page =
|
122
|
+
@next_page = reports_url('sends/' + url)
|
123
123
|
@data_attribute = 'sends'
|
124
124
|
end
|
125
125
|
end
|
@@ -129,7 +129,7 @@ module Urbanairship
|
|
129
129
|
end_date: required('end_date'), precision: required('precision'))
|
130
130
|
super(client: client)
|
131
131
|
url = Helper.new.get_url(start_date, end_date, precision)
|
132
|
-
@next_page =
|
132
|
+
@next_page = reports_url('responses/' + url)
|
133
133
|
@data_attribute = 'responses'
|
134
134
|
end
|
135
135
|
end
|
@@ -139,7 +139,7 @@ module Urbanairship
|
|
139
139
|
end_date: required('end_date'), precision: required('precision'))
|
140
140
|
super(client: client)
|
141
141
|
url = Helper.new.get_url(start_date, end_date, precision)
|
142
|
-
@next_page =
|
142
|
+
@next_page = reports_url('opens/' + url)
|
143
143
|
@data_attribute = 'opens'
|
144
144
|
end
|
145
145
|
end
|
@@ -149,7 +149,7 @@ module Urbanairship
|
|
149
149
|
end_date: required('end_date'), precision: required('precision'))
|
150
150
|
super(client: client)
|
151
151
|
url = Helper.new.get_url(start_date, end_date, precision)
|
152
|
-
@next_page =
|
152
|
+
@next_page = reports_url('timeinapp/' + url)
|
153
153
|
@data_attribute = 'timeinapp'
|
154
154
|
end
|
155
155
|
end
|
data/lib/urbanairship/version.rb
CHANGED
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:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airship
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -168,6 +168,8 @@ files:
|
|
168
168
|
- lib/urbanairship/client.rb
|
169
169
|
- lib/urbanairship/common.rb
|
170
170
|
- lib/urbanairship/configuration.rb
|
171
|
+
- lib/urbanairship/custom_events/custom_event.rb
|
172
|
+
- lib/urbanairship/custom_events/payload.rb
|
171
173
|
- lib/urbanairship/devices/attribute.rb
|
172
174
|
- lib/urbanairship/devices/channel_tags.rb
|
173
175
|
- lib/urbanairship/devices/channel_uninstall.rb
|