messagemedia_messages_sdk 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +201 -0
- data/README.md +608 -0
- data/lib/message_media_messages.rb +50 -0
- data/lib/message_media_messages/api_helper.rb +209 -0
- data/lib/message_media_messages/configuration.rb +29 -0
- data/lib/message_media_messages/controllers/base_controller.rb +57 -0
- data/lib/message_media_messages/controllers/delivery_reports_controller.rb +208 -0
- data/lib/message_media_messages/controllers/messages_controller.rb +336 -0
- data/lib/message_media_messages/controllers/replies_controller.rb +208 -0
- data/lib/message_media_messages/exceptions/api_exception.rb +18 -0
- data/lib/message_media_messages/http/auth/basic_auth.rb +20 -0
- data/lib/message_media_messages/http/faraday_client.rb +55 -0
- data/lib/message_media_messages/http/http_call_back.rb +22 -0
- data/lib/message_media_messages/http/http_client.rb +92 -0
- data/lib/message_media_messages/http/http_context.rb +18 -0
- data/lib/message_media_messages/http/http_method_enum.rb +11 -0
- data/lib/message_media_messages/http/http_request.rb +48 -0
- data/lib/message_media_messages/http/http_response.rb +21 -0
- data/lib/message_media_messages/message_media_messages_client.rb +39 -0
- data/lib/message_media_messages/models/base_model.rb +34 -0
- data/lib/message_media_messages/models/cancel_scheduled_message_request.rb +35 -0
- data/lib/message_media_messages/models/check_delivery_reports_response.rb +35 -0
- data/lib/message_media_messages/models/check_replies_response.rb +35 -0
- data/lib/message_media_messages/models/confirm_delivery_reports_as_received_request.rb +35 -0
- data/lib/message_media_messages/models/confirm_delivery_reports_as_received_request_11.rb +35 -0
- data/lib/message_media_messages/models/confirm_replies_as_received_request.rb +35 -0
- data/lib/message_media_messages/models/confirm_replies_as_received_request_8.rb +35 -0
- data/lib/message_media_messages/models/send_messages_request.rb +35 -0
- data/lib/message_media_messages/models/send_messages_response.rb +35 -0
- data/test/controllers/controller_test_base.rb +30 -0
- data/test/controllers/test_delivery_reports_controller.rb +131 -0
- data/test/controllers/test_messages_controller.rb +105 -0
- data/test/controllers/test_replies_controller.rb +132 -0
- data/test/http_response_catcher.rb +16 -0
- data/test/test_helper.rb +91 -0
- metadata +168 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
require 'date'
|
4
|
+
require 'json'
|
5
|
+
require 'faraday'
|
6
|
+
require 'certifi'
|
7
|
+
require 'logging'
|
8
|
+
|
9
|
+
require_relative 'message_media_messages/api_helper.rb'
|
10
|
+
require_relative 'message_media_messages/message_media_messages_client.rb'
|
11
|
+
|
12
|
+
# Http
|
13
|
+
require_relative 'message_media_messages/http/http_call_back.rb'
|
14
|
+
require_relative 'message_media_messages/http/http_client.rb'
|
15
|
+
require_relative 'message_media_messages/http/http_method_enum.rb'
|
16
|
+
require_relative 'message_media_messages/http/http_request.rb'
|
17
|
+
require_relative 'message_media_messages/http/http_response.rb'
|
18
|
+
require_relative 'message_media_messages/http/http_context.rb'
|
19
|
+
require_relative 'message_media_messages/http/faraday_client.rb'
|
20
|
+
require_relative 'message_media_messages/http/auth/basic_auth.rb'
|
21
|
+
|
22
|
+
# Models
|
23
|
+
require_relative 'message_media_messages/models/base_model.rb'
|
24
|
+
require_relative 'message_media_messages/models' \
|
25
|
+
'/check_delivery_reports_response.rb'
|
26
|
+
require_relative 'message_media_messages/models' \
|
27
|
+
'/confirm_replies_as_received_request_8.rb'
|
28
|
+
require_relative 'message_media_messages/models' \
|
29
|
+
'/confirm_replies_as_received_request.rb'
|
30
|
+
require_relative 'message_media_messages/models/check_replies_response.rb'
|
31
|
+
require_relative 'message_media_messages/models' \
|
32
|
+
'/cancel_scheduled_message_request.rb'
|
33
|
+
require_relative 'message_media_messages/models/send_messages_response.rb'
|
34
|
+
require_relative 'message_media_messages/models/send_messages_request.rb'
|
35
|
+
require_relative 'message_media_messages/models' \
|
36
|
+
'/confirm_delivery_reports_as_received_request.rb'
|
37
|
+
require_relative 'message_media_messages/models' \
|
38
|
+
'/confirm_delivery_reports_as_received_request_11.rb'
|
39
|
+
|
40
|
+
# Exceptions
|
41
|
+
require_relative 'message_media_messages/exceptions/api_exception.rb'
|
42
|
+
|
43
|
+
require_relative 'message_media_messages/configuration.rb'
|
44
|
+
|
45
|
+
# Controllers
|
46
|
+
require_relative 'message_media_messages/controllers/base_controller.rb'
|
47
|
+
require_relative 'message_media_messages/controllers/messages_controller.rb'
|
48
|
+
require_relative 'message_media_messages/controllers' \
|
49
|
+
'/delivery_reports_controller.rb'
|
50
|
+
require_relative 'message_media_messages/controllers/replies_controller.rb'
|
@@ -0,0 +1,209 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaMessages
|
5
|
+
# API utility class
|
6
|
+
class APIHelper
|
7
|
+
# Serializes an array parameter (creates key value pairs).
|
8
|
+
# @param [String] The name of the parameter.
|
9
|
+
# @param [Array] The value of the parameter.
|
10
|
+
# @param [String] The format of the serialization.
|
11
|
+
def self.serialize_array(key, array, formatting: 'indexed')
|
12
|
+
tuples = []
|
13
|
+
|
14
|
+
if formatting == 'unindexed'
|
15
|
+
tuples += array.map { |element| ["#{key}[]", element] }
|
16
|
+
elsif formatting == 'indexed'
|
17
|
+
tuples += array.map.with_index do |element, index|
|
18
|
+
["#{key}[#{index}]", element]
|
19
|
+
end
|
20
|
+
elsif formatting == 'plain'
|
21
|
+
tuples += array.map { |element| [key, element] }
|
22
|
+
else
|
23
|
+
raise ArgumentError, 'Invalid format provided.'
|
24
|
+
end
|
25
|
+
tuples
|
26
|
+
end
|
27
|
+
|
28
|
+
# Replaces template parameters in the given url.
|
29
|
+
# @param [String] The query string builder to replace the template
|
30
|
+
# parameters.
|
31
|
+
# @param [Hash] The parameters to replace in the url.
|
32
|
+
def self.append_url_with_template_parameters(query_builder, parameters)
|
33
|
+
# perform parameter validation
|
34
|
+
unless query_builder.instance_of? String
|
35
|
+
raise ArgumentError, 'Given value for parameter \"query_builder\" is
|
36
|
+
invalid.'
|
37
|
+
end
|
38
|
+
|
39
|
+
# Return if there are no parameters to replace.
|
40
|
+
return query_builder if parameters.nil?
|
41
|
+
|
42
|
+
# Iterate and append parameters.
|
43
|
+
parameters.each do |key, value|
|
44
|
+
replace_value = ''
|
45
|
+
|
46
|
+
if value.nil?
|
47
|
+
replace_value = ''
|
48
|
+
elsif value.instance_of? Array
|
49
|
+
value.map! { |element| CGI.escape(element.to_s) }
|
50
|
+
replace_value = value.join('/')
|
51
|
+
else
|
52
|
+
replace_value = CGI.escape(value.to_s)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Find the template parameter and replace it with its value.
|
56
|
+
query_builder = query_builder.gsub('{' + key.to_s + '}', replace_value)
|
57
|
+
end
|
58
|
+
query_builder
|
59
|
+
end
|
60
|
+
|
61
|
+
# Appends the given set of parameters to the given query string.
|
62
|
+
# @param [String] The query string builder to add the query parameters to.
|
63
|
+
# @param [Hash] The parameters to append.
|
64
|
+
# @param [String] The format of array parameter serialization.
|
65
|
+
def self.append_url_with_query_parameters(query_builder, parameters,
|
66
|
+
array_serialization: 'indexed')
|
67
|
+
# Perform parameter validation.
|
68
|
+
unless query_builder.instance_of? String
|
69
|
+
raise ArgumentError, 'Given value for parameter \"query_builder\"
|
70
|
+
is invalid.'
|
71
|
+
end
|
72
|
+
|
73
|
+
# Return if there are no parameters to replace.
|
74
|
+
return query_builder if parameters.nil?
|
75
|
+
|
76
|
+
parameters.each do |key, value|
|
77
|
+
seperator = query_builder.include?('?') ? '&' : '?'
|
78
|
+
unless value.nil?
|
79
|
+
if value.instance_of? Array
|
80
|
+
value.compact!
|
81
|
+
query_builder += if array_serialization == 'csv'
|
82
|
+
"#{seperator}#{key}=#{value.map do |element|
|
83
|
+
CGI.escape(element.to_s)
|
84
|
+
end.join(',')}"
|
85
|
+
elsif array_serialization == 'psv'
|
86
|
+
"#{seperator}#{key}=#{value.map do |element|
|
87
|
+
CGI.escape(element.to_s)
|
88
|
+
end.join('|')}"
|
89
|
+
elsif array_serialization == 'tsv'
|
90
|
+
"#{seperator}#{key}=#{value.map do |element|
|
91
|
+
CGI.escape(element.to_s)
|
92
|
+
end.join('\t')}"
|
93
|
+
else
|
94
|
+
"#{seperator}#{APIHelper.serialize_array(
|
95
|
+
key, value, formatting: array_serialization
|
96
|
+
).map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }
|
97
|
+
.join('&')}"
|
98
|
+
end
|
99
|
+
else
|
100
|
+
query_builder += "#{seperator}#{key}=#{CGI.escape(value.to_s)}"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
query_builder
|
105
|
+
end
|
106
|
+
|
107
|
+
# Validates and processes the given Url.
|
108
|
+
# @param [String] The given Url to process.
|
109
|
+
# @return [String] Pre-processed Url as string.
|
110
|
+
def self.clean_url(url)
|
111
|
+
# Perform parameter validation.
|
112
|
+
raise ArgumentError, 'Invalid Url.' unless url.instance_of? String
|
113
|
+
|
114
|
+
# Ensure that the urls are absolute.
|
115
|
+
matches = url.match(%r{^(https?:\/\/[^\/]+)})
|
116
|
+
raise ArgumentError, 'Invalid Url format.' if matches.nil?
|
117
|
+
|
118
|
+
# Get the http protocol match.
|
119
|
+
protocol = matches[1]
|
120
|
+
|
121
|
+
# Check if parameters exist.
|
122
|
+
index = url.index('?')
|
123
|
+
|
124
|
+
# Remove redundant forward slashes.
|
125
|
+
query = url[protocol.length...(!index.nil? ? index : url.length)]
|
126
|
+
query.gsub!(%r{\/\/+}, '/')
|
127
|
+
|
128
|
+
# Get the parameters.
|
129
|
+
parameters = !index.nil? ? url[url.index('?')...url.length] : ''
|
130
|
+
|
131
|
+
# Return processed url.
|
132
|
+
protocol + query + parameters
|
133
|
+
end
|
134
|
+
|
135
|
+
# Parses JSON string.
|
136
|
+
# @param [String] A JSON string.
|
137
|
+
def self.json_deserialize(json)
|
138
|
+
return JSON.parse(json)
|
139
|
+
rescue StandardError
|
140
|
+
raise TypeError, 'Server responded with invalid JSON.'
|
141
|
+
end
|
142
|
+
|
143
|
+
# Removes elements with empty values from a hash.
|
144
|
+
# @param [Hash] The hash to clean.
|
145
|
+
def self.clean_hash(hash)
|
146
|
+
hash.delete_if { |_key, value| value.to_s.strip.empty? }
|
147
|
+
end
|
148
|
+
|
149
|
+
# Form encodes a hash of parameters.
|
150
|
+
# @param [Hash] The hash of parameters to encode.
|
151
|
+
# @return [Hash] A hash with the same parameters form encoded.
|
152
|
+
def self.form_encode_parameters(form_parameters)
|
153
|
+
encoded = {}
|
154
|
+
form_parameters.each do |key, value|
|
155
|
+
encoded.merge!(APIHelper.form_encode(value, key))
|
156
|
+
end
|
157
|
+
encoded
|
158
|
+
end
|
159
|
+
|
160
|
+
# Form encodes an object.
|
161
|
+
# @param [Dynamic] An object to form encode.
|
162
|
+
# @param [String] The name of the object.
|
163
|
+
# @return [Hash] A form encoded representation of the object in the form
|
164
|
+
# of a hash.
|
165
|
+
def self.form_encode(obj, instance_name)
|
166
|
+
retval = {}
|
167
|
+
|
168
|
+
# If this is a structure, resolve it's field names.
|
169
|
+
obj = obj.to_hash if obj.is_a? BaseModel
|
170
|
+
|
171
|
+
# Create a form encoded hash for this object.
|
172
|
+
if obj.nil?
|
173
|
+
nil
|
174
|
+
elsif obj.instance_of? Array
|
175
|
+
obj.each_with_index do |value, index|
|
176
|
+
retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
|
177
|
+
index.to_s + ']'))
|
178
|
+
end
|
179
|
+
elsif obj.instance_of? Hash
|
180
|
+
obj.each do |key, value|
|
181
|
+
retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
|
182
|
+
key + ']'))
|
183
|
+
end
|
184
|
+
else
|
185
|
+
retval[instance_name] = obj
|
186
|
+
end
|
187
|
+
retval
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
# Extend types to support to_bool.
|
193
|
+
module ToBoolean
|
194
|
+
def to_bool
|
195
|
+
return true if self == true || to_s.strip =~ /^(true|yes|y|1)$/i
|
196
|
+
false
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
# Extend NilClass type to support to_bool.
|
201
|
+
class NilClass; include ToBoolean; end
|
202
|
+
# Extend TrueClass type to support to_bool.
|
203
|
+
class TrueClass; include ToBoolean; end
|
204
|
+
# Extend FalseClass type to support to_bool.
|
205
|
+
class FalseClass; include ToBoolean; end
|
206
|
+
# Extend Numeric type to support to_bool.
|
207
|
+
class Numeric; include ToBoolean; end
|
208
|
+
# Extend String type to support to_bool.
|
209
|
+
class String; include ToBoolean; end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaMessages
|
5
|
+
|
6
|
+
Logging.logger.root.appenders = Logging.appenders.stdout
|
7
|
+
Logging.logger.root.level = :info
|
8
|
+
|
9
|
+
# All configuration including auth info and base URI for the API access
|
10
|
+
# are configured in this class.
|
11
|
+
class Configuration
|
12
|
+
# The base Uri for API calls
|
13
|
+
@base_uri = 'https://api.messagemedia.com'
|
14
|
+
|
15
|
+
# The username to use with basic authentication
|
16
|
+
@basic_auth_user_name = 'TODO: Replace'
|
17
|
+
|
18
|
+
# The password to use with basic authentication
|
19
|
+
@basic_auth_password = 'TODO: Replace'
|
20
|
+
|
21
|
+
# The attribute accessors for public properties.
|
22
|
+
class << self
|
23
|
+
attr_accessor :array_serialization
|
24
|
+
attr_accessor :base_uri
|
25
|
+
attr_accessor :basic_auth_user_name
|
26
|
+
attr_accessor :basic_auth_password
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaMessages
|
5
|
+
# Base controller.
|
6
|
+
class BaseController
|
7
|
+
attr_accessor :http_client, :http_call_back
|
8
|
+
|
9
|
+
def initialize(http_client: nil, http_call_back: nil)
|
10
|
+
@http_client = http_client || FaradayClient.new
|
11
|
+
@http_call_back = http_call_back
|
12
|
+
|
13
|
+
@global_headers = {
|
14
|
+
'user-agent' => 'messagemedia-messages-ruby-sdk-1.0.0'
|
15
|
+
}
|
16
|
+
@logger = Logging.logger[self]
|
17
|
+
@logger.info("Instantiated controller class.")
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate_parameters(args)
|
21
|
+
args.each do |_name, value|
|
22
|
+
if value.nil?
|
23
|
+
raise ArgumentError, "Required parameter #{_name} cannot be nil."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def execute_request(request, binary: false, name: nil)
|
29
|
+
@logger.info("Calling the on_before_request method of http_call_back for #{name}.") if @http_call_back
|
30
|
+
@http_call_back.on_before_request(request) if @http_call_back
|
31
|
+
|
32
|
+
@logger.info("Merging global headers with endpoint headers for #{name}.")
|
33
|
+
APIHelper.clean_hash(request.headers)
|
34
|
+
request.headers = @global_headers.clone.merge(request.headers)
|
35
|
+
|
36
|
+
@logger.debug("Raw request for #{name} is: #{request.inspect}")
|
37
|
+
response = if binary
|
38
|
+
@http_client.execute_as_binary(request)
|
39
|
+
else
|
40
|
+
@http_client.execute_as_string(request)
|
41
|
+
end
|
42
|
+
@logger.debug("Raw response for #{name} is: #{response.inspect}")
|
43
|
+
@logger.info("Wrapping request and response in a context object for #{name}.")
|
44
|
+
context = HttpContext.new(request, response)
|
45
|
+
|
46
|
+
@logger.info("Calling on_after_response method of http_call_back for #{name}.") if @http_call_back
|
47
|
+
@http_call_back.on_after_response(context) if @http_call_back
|
48
|
+
|
49
|
+
context
|
50
|
+
end
|
51
|
+
|
52
|
+
def validate_response(context)
|
53
|
+
raise APIException.new 'HTTP Response Not OK', context unless
|
54
|
+
context.response.status_code.between?(200, 208) # [200,208] = HTTP OK
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaMessages
|
5
|
+
# DeliveryReportsController
|
6
|
+
class DeliveryReportsController < BaseController
|
7
|
+
@instance = DeliveryReportsController.new
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_accessor :instance
|
11
|
+
end
|
12
|
+
|
13
|
+
def instance
|
14
|
+
self.class.instance
|
15
|
+
end
|
16
|
+
|
17
|
+
# Check for any delivery reports that have been received.
|
18
|
+
# Delivery reports are a notification of the change in status of a message
|
19
|
+
# as it is being processed.
|
20
|
+
# Each request to the check delivery reports endpoint will return any
|
21
|
+
# delivery reports received that
|
22
|
+
# have not yet been confirmed using the confirm delivery reports endpoint. A
|
23
|
+
# response from the check
|
24
|
+
# delivery reports endpoint will have the following structure:
|
25
|
+
# ```json
|
26
|
+
# {
|
27
|
+
# "delivery_reports": [
|
28
|
+
# {
|
29
|
+
# "callback_url": "https://my.callback.url.com",
|
30
|
+
# "delivery_report_id": "01e1fa0a-6e27-4945-9cdb-18644b4de043",
|
31
|
+
# "source_number": "+61491570157",
|
32
|
+
# "date_received": "2017-05-20T06:30:37.642Z",
|
33
|
+
# "status": "enroute",
|
34
|
+
# "delay": 0,
|
35
|
+
# "submitted_date": "2017-05-20T06:30:37.639Z",
|
36
|
+
# "original_text": "My first message!",
|
37
|
+
# "message_id": "d781dcab-d9d8-4fb2-9e03-872f07ae94ba",
|
38
|
+
# "vendor_account_id": {
|
39
|
+
# "vendor_id": "MessageMedia",
|
40
|
+
# "account_id": "MyAccount"
|
41
|
+
# },
|
42
|
+
# "metadata": {
|
43
|
+
# "key1": "value1",
|
44
|
+
# "key2": "value2"
|
45
|
+
# }
|
46
|
+
# },
|
47
|
+
# {
|
48
|
+
# "callback_url": "https://my.callback.url.com",
|
49
|
+
# "delivery_report_id": "0edf9022-7ccc-43e6-acab-480e93e98c1b",
|
50
|
+
# "source_number": "+61491570158",
|
51
|
+
# "date_received": "2017-05-21T01:46:42.579Z",
|
52
|
+
# "status": "enroute",
|
53
|
+
# "delay": 0,
|
54
|
+
# "submitted_date": "2017-05-21T01:46:42.574Z",
|
55
|
+
# "original_text": "My second message!",
|
56
|
+
# "message_id": "fbb3b3f5-b702-4d8b-ab44-65b2ee39a281",
|
57
|
+
# "vendor_account_id": {
|
58
|
+
# "vendor_id": "MessageMedia",
|
59
|
+
# "account_id": "MyAccount"
|
60
|
+
# },
|
61
|
+
# "metadata": {
|
62
|
+
# "key1": "value1",
|
63
|
+
# "key2": "value2"
|
64
|
+
# }
|
65
|
+
# }
|
66
|
+
# ]
|
67
|
+
# }
|
68
|
+
# ```
|
69
|
+
# Each delivery report will contain details about the message, including any
|
70
|
+
# metadata specified
|
71
|
+
# and the new status of the message (as each delivery report indicates a
|
72
|
+
# change in status of a
|
73
|
+
# message) and the timestamp at which the status changed. Every delivery
|
74
|
+
# report will have a
|
75
|
+
# unique delivery report ID for use with the confirm delivery reports
|
76
|
+
# endpoint.
|
77
|
+
# *Note: The source number and destination number properties in a delivery
|
78
|
+
# report are the inverse of
|
79
|
+
# those specified in the message that the delivery report relates to. The
|
80
|
+
# source number of the
|
81
|
+
# delivery report is the destination number of the original message.*
|
82
|
+
# Subsequent requests to the check delivery reports endpoint will return the
|
83
|
+
# same delivery reports
|
84
|
+
# and a maximum of 100 delivery reports will be returned in each request.
|
85
|
+
# Applications should use the
|
86
|
+
# confirm delivery reports endpoint in the following pattern so that
|
87
|
+
# delivery reports that have been
|
88
|
+
# processed are no longer returned in subsequent check delivery reports
|
89
|
+
# requests.
|
90
|
+
# 1. Call check delivery reports endpoint
|
91
|
+
# 2. Process each delivery report
|
92
|
+
# 3. Confirm all processed delivery reports using the confirm delivery
|
93
|
+
# reports endpoint
|
94
|
+
# *Note: It is recommended to use the Webhooks feature to receive reply
|
95
|
+
# messages rather than
|
96
|
+
# polling the check delivery reports endpoint.*
|
97
|
+
# @return CheckDeliveryReportsResponse response from the API call
|
98
|
+
def get_check_delivery_reports
|
99
|
+
begin
|
100
|
+
@logger.info("get_check_delivery_reports called.")
|
101
|
+
# Prepare query url.
|
102
|
+
@logger.info("Preparing query URL for get_check_delivery_reports.")
|
103
|
+
_query_builder = Configuration.base_uri.dup
|
104
|
+
_query_builder << '/v1/delivery_reports'
|
105
|
+
_query_url = APIHelper.clean_url _query_builder
|
106
|
+
|
107
|
+
# Prepare headers.
|
108
|
+
@logger.info("Preparing headers for get_check_delivery_reports.")
|
109
|
+
_headers = {
|
110
|
+
'accept' => 'application/json'
|
111
|
+
}
|
112
|
+
|
113
|
+
# Prepare and execute HttpRequest.
|
114
|
+
@logger.info('Preparing and executing HttpRequest for get_check_delivery_reports.')
|
115
|
+
_request = @http_client.get(
|
116
|
+
_query_url,
|
117
|
+
headers: _headers
|
118
|
+
)
|
119
|
+
BasicAuth.apply(_request)
|
120
|
+
_context = execute_request(_request, name: 'get_check_delivery_reports')
|
121
|
+
validate_response(_context)
|
122
|
+
|
123
|
+
# Return appropriate response type.
|
124
|
+
@logger.info("Returning response for get_check_delivery_reports.")
|
125
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body)
|
126
|
+
CheckDeliveryReportsResponse.from_hash(decoded)
|
127
|
+
|
128
|
+
rescue Exception => e
|
129
|
+
@logger.error(e)
|
130
|
+
raise e
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Mark a delivery report as confirmed so it is no longer return in check
|
135
|
+
# delivery reports requests.
|
136
|
+
# The confirm delivery reports endpoint is intended to be used in
|
137
|
+
# conjunction with the check delivery
|
138
|
+
# reports endpoint to allow for robust processing of delivery reports. Once
|
139
|
+
# one or more delivery
|
140
|
+
# reports have been processed, they can then be confirmed using the confirm
|
141
|
+
# delivery reports endpoint so they
|
142
|
+
# are no longer returned in subsequent check delivery reports requests.
|
143
|
+
# The confirm delivery reports endpoint takes a list of delivery report IDs
|
144
|
+
# as follows:
|
145
|
+
# ```json
|
146
|
+
# {
|
147
|
+
# "delivery_report_ids": [
|
148
|
+
# "011dcead-6988-4ad6-a1c7-6b6c68ea628d",
|
149
|
+
# "3487b3fa-6586-4979-a233-2d1b095c7718",
|
150
|
+
# "ba28e94b-c83d-4759-98e7-ff9c7edb87a1"
|
151
|
+
# ]
|
152
|
+
# }
|
153
|
+
# ```
|
154
|
+
# Up to 100 delivery reports can be confirmed in a single confirm delivery
|
155
|
+
# reports request.
|
156
|
+
# @param [ConfirmDeliveryReportsAsReceivedRequest] body Required parameter:
|
157
|
+
# Example:
|
158
|
+
# @return Mixed response from the API call
|
159
|
+
def create_confirm_delivery_reports_as_received(body)
|
160
|
+
begin
|
161
|
+
@logger.info("create_confirm_delivery_reports_as_received called.")
|
162
|
+
# Prepare query url.
|
163
|
+
@logger.info("Preparing query URL for create_confirm_delivery_reports_as_received.")
|
164
|
+
_query_builder = Configuration.base_uri.dup
|
165
|
+
_query_builder << '/v1/delivery_reports/confirmed'
|
166
|
+
_query_url = APIHelper.clean_url _query_builder
|
167
|
+
|
168
|
+
# Prepare headers.
|
169
|
+
@logger.info("Preparing headers for create_confirm_delivery_reports_as_received.")
|
170
|
+
_headers = {
|
171
|
+
'accept' => 'application/json',
|
172
|
+
'content-type' => 'application/json; charset=utf-8'
|
173
|
+
}
|
174
|
+
|
175
|
+
# Prepare and execute HttpRequest.
|
176
|
+
@logger.info('Preparing and executing HttpRequest for create_confirm_delivery_reports_as_received.')
|
177
|
+
_request = @http_client.post(
|
178
|
+
_query_url,
|
179
|
+
headers: _headers,
|
180
|
+
parameters: body.to_json
|
181
|
+
)
|
182
|
+
BasicAuth.apply(_request)
|
183
|
+
_context = execute_request(_request, name: 'create_confirm_delivery_reports_as_received')
|
184
|
+
|
185
|
+
# Validate response against endpoint and global error codes.
|
186
|
+
@logger.info("Validating response for create_confirm_delivery_reports_as_received.")
|
187
|
+
if _context.response.status_code == 400
|
188
|
+
raise APIException.new(
|
189
|
+
'',
|
190
|
+
_context
|
191
|
+
)
|
192
|
+
end
|
193
|
+
validate_response(_context)
|
194
|
+
|
195
|
+
# Return appropriate response type.
|
196
|
+
@logger.info("Returning response for create_confirm_delivery_reports_as_received.")
|
197
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body) unless
|
198
|
+
_context.response.raw_body.nil? ||
|
199
|
+
_context.response.raw_body.to_s.strip.empty?
|
200
|
+
decoded
|
201
|
+
|
202
|
+
rescue Exception => e
|
203
|
+
@logger.error(e)
|
204
|
+
raise e
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|