messagemedia_messages_sdk 1.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 +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
|