messagemedia_messages_sdk 1.0.0 → 1.1.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/README.md +106 -606
- data/lib/message_media_messages.rb +2 -2
- data/lib/message_media_messages/api_helper.rb +1 -2
- data/lib/message_media_messages/configuration.rb +9 -1
- data/lib/message_media_messages/controllers/base_controller.rb +18 -1
- data/lib/message_media_messages/controllers/delivery_reports_controller.rb +50 -32
- data/lib/message_media_messages/controllers/messages_controller.rb +93 -66
- data/lib/message_media_messages/controllers/replies_controller.rb +49 -32
- data/lib/message_media_messages/exceptions/api_exception.rb +2 -2
- data/lib/message_media_messages/http/auth/basic_auth.rb +1 -1
- data/lib/message_media_messages/http/auth/hmac_auth.rb +54 -0
- data/lib/message_media_messages/http/http_call_back.rb +2 -2
- data/lib/message_media_messages/http/http_client.rb +17 -16
- data/lib/message_media_messages/http/http_context.rb +2 -2
- data/lib/message_media_messages/http/http_request.rb +10 -10
- data/lib/message_media_messages/http/http_response.rb +3 -3
- data/lib/message_media_messages/message_media_messages_client.rb +8 -5
- data/test/controllers/controller_test_base.rb +4 -1
- data/test/controllers/test_delivery_reports_controller.rb +162 -129
- data/test/controllers/test_messages_controller.rb +165 -104
- data/test/controllers/test_replies_controller.rb +162 -130
- data/test/test_helper.rb +9 -21
- metadata +4 -3
@@ -18,6 +18,7 @@ require_relative 'message_media_messages/http/http_response.rb'
|
|
18
18
|
require_relative 'message_media_messages/http/http_context.rb'
|
19
19
|
require_relative 'message_media_messages/http/faraday_client.rb'
|
20
20
|
require_relative 'message_media_messages/http/auth/basic_auth.rb'
|
21
|
+
require_relative 'message_media_messages/http/auth/hmac_auth.rb'
|
21
22
|
|
22
23
|
# Models
|
23
24
|
require_relative 'message_media_messages/models/base_model.rb'
|
@@ -45,6 +46,5 @@ require_relative 'message_media_messages/configuration.rb'
|
|
45
46
|
# Controllers
|
46
47
|
require_relative 'message_media_messages/controllers/base_controller.rb'
|
47
48
|
require_relative 'message_media_messages/controllers/messages_controller.rb'
|
48
|
-
require_relative 'message_media_messages/controllers'
|
49
|
-
'/delivery_reports_controller.rb'
|
49
|
+
require_relative 'message_media_messages/controllers/delivery_reports_controller.rb'
|
50
50
|
require_relative 'message_media_messages/controllers/replies_controller.rb'
|
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
module MessageMediaMessages
|
5
5
|
# API utility class
|
6
|
+
# noinspection RubyClassMethodNamingConvention
|
6
7
|
class APIHelper
|
7
8
|
# Serializes an array parameter (creates key value pairs).
|
8
9
|
# @param [String] The name of the parameter.
|
@@ -41,8 +42,6 @@ module MessageMediaMessages
|
|
41
42
|
|
42
43
|
# Iterate and append parameters.
|
43
44
|
parameters.each do |key, value|
|
44
|
-
replace_value = ''
|
45
|
-
|
46
45
|
if value.nil?
|
47
46
|
replace_value = ''
|
48
47
|
elsif value.instance_of? Array
|
@@ -10,7 +10,7 @@ module MessageMediaMessages
|
|
10
10
|
# are configured in this class.
|
11
11
|
class Configuration
|
12
12
|
# The base Uri for API calls
|
13
|
-
@base_uri = '
|
13
|
+
@base_uri = 'http://api.messagemedia.com'
|
14
14
|
|
15
15
|
# The username to use with basic authentication
|
16
16
|
@basic_auth_user_name = 'TODO: Replace'
|
@@ -18,12 +18,20 @@ module MessageMediaMessages
|
|
18
18
|
# The password to use with basic authentication
|
19
19
|
@basic_auth_password = 'TODO: Replace'
|
20
20
|
|
21
|
+
# The username to use with HMAC authentication
|
22
|
+
@hmac_auth_user_name = nil
|
23
|
+
|
24
|
+
# The password to use with HMAC authentication
|
25
|
+
@hmac_auth_password = nil
|
26
|
+
|
21
27
|
# The attribute accessors for public properties.
|
22
28
|
class << self
|
23
29
|
attr_accessor :array_serialization
|
24
30
|
attr_accessor :base_uri
|
25
31
|
attr_accessor :basic_auth_user_name
|
26
32
|
attr_accessor :basic_auth_password
|
33
|
+
attr_accessor :hmac_auth_user_name
|
34
|
+
attr_accessor :hmac_auth_password
|
27
35
|
end
|
28
36
|
end
|
29
37
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
2
|
# ( https://apimatic.io ).
|
3
3
|
|
4
|
+
require 'message_media_messages/configuration.rb'
|
5
|
+
|
4
6
|
module MessageMediaMessages
|
5
7
|
# Base controller.
|
6
8
|
class BaseController
|
@@ -13,6 +15,7 @@ module MessageMediaMessages
|
|
13
15
|
@global_headers = {
|
14
16
|
'user-agent' => 'messagemedia-messages-ruby-sdk-1.0.0'
|
15
17
|
}
|
18
|
+
|
16
19
|
@logger = Logging.logger[self]
|
17
20
|
@logger.info("Instantiated controller class.")
|
18
21
|
end
|
@@ -25,6 +28,14 @@ module MessageMediaMessages
|
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
31
|
+
def apply_authentication(request, url, body=nil)
|
32
|
+
if Configuration.hmac_auth_user_name == nil or Configuration.hmac_auth_password == nil
|
33
|
+
BasicAuth.apply(request)
|
34
|
+
else
|
35
|
+
HmacAuth.apply(request, url, body)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
28
39
|
def execute_request(request, binary: false, name: nil)
|
29
40
|
@logger.info("Calling the on_before_request method of http_call_back for #{name}.") if @http_call_back
|
30
41
|
@http_call_back.on_before_request(request) if @http_call_back
|
@@ -49,8 +60,14 @@ module MessageMediaMessages
|
|
49
60
|
context
|
50
61
|
end
|
51
62
|
|
63
|
+
def add_account_header(headers, account_header_value)
|
64
|
+
if headers != nil && account_header_value != nil
|
65
|
+
headers["account"] = account_header_value
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
52
69
|
def validate_response(context)
|
53
|
-
raise APIException.new 'HTTP Response Not OK', context unless
|
70
|
+
raise APIException.new 'HTTP Response Not OK. ' + context.response.raw_body, context unless
|
54
71
|
context.response.status_code.between?(200, 208) # [200,208] = HTTP OK
|
55
72
|
end
|
56
73
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
module MessageMediaMessages
|
5
5
|
# DeliveryReportsController
|
6
|
+
# noinspection RubyResolve,RubyInstanceMethodNamingConvention,RubyStringKeysInHashInspection
|
6
7
|
class DeliveryReportsController < BaseController
|
7
8
|
@instance = DeliveryReportsController.new
|
8
9
|
|
@@ -94,35 +95,42 @@ module MessageMediaMessages
|
|
94
95
|
# *Note: It is recommended to use the Webhooks feature to receive reply
|
95
96
|
# messages rather than
|
96
97
|
# polling the check delivery reports endpoint.*
|
98
|
+
# @param [Object] account_header_value The account id to pass to the API
|
97
99
|
# @return CheckDeliveryReportsResponse response from the API call
|
98
|
-
def get_check_delivery_reports
|
100
|
+
def get_check_delivery_reports(account_header_value=nil)
|
99
101
|
begin
|
100
102
|
@logger.info("get_check_delivery_reports called.")
|
103
|
+
|
104
|
+
request_url = '/v1/delivery_reports'
|
101
105
|
# Prepare query url.
|
102
106
|
@logger.info("Preparing query URL for get_check_delivery_reports.")
|
103
|
-
|
104
|
-
|
105
|
-
|
107
|
+
query_builder = Configuration.base_uri.dup
|
108
|
+
query_builder << request_url
|
109
|
+
query_url = APIHelper.clean_url query_builder
|
106
110
|
|
107
111
|
# Prepare headers.
|
108
112
|
@logger.info("Preparing headers for get_check_delivery_reports.")
|
109
|
-
|
113
|
+
headers = {
|
110
114
|
'accept' => 'application/json'
|
111
115
|
}
|
112
|
-
|
116
|
+
|
117
|
+
add_account_header(headers, account_header_value)
|
118
|
+
|
113
119
|
# Prepare and execute HttpRequest.
|
114
120
|
@logger.info('Preparing and executing HttpRequest for get_check_delivery_reports.')
|
115
|
-
|
116
|
-
|
117
|
-
headers:
|
121
|
+
request = @http_client.get(
|
122
|
+
query_url,
|
123
|
+
headers: headers
|
118
124
|
)
|
119
|
-
|
120
|
-
|
121
|
-
|
125
|
+
|
126
|
+
apply_authentication(request, request_url)
|
127
|
+
|
128
|
+
context = execute_request(request, name: 'get_check_delivery_reports')
|
129
|
+
validate_response(context)
|
122
130
|
|
123
131
|
# Return appropriate response type.
|
124
132
|
@logger.info("Returning response for get_check_delivery_reports.")
|
125
|
-
decoded = APIHelper.json_deserialize(
|
133
|
+
decoded = APIHelper.json_deserialize(context.response.raw_body)
|
126
134
|
CheckDeliveryReportsResponse.from_hash(decoded)
|
127
135
|
|
128
136
|
rescue Exception => e
|
@@ -155,49 +163,59 @@ module MessageMediaMessages
|
|
155
163
|
# reports request.
|
156
164
|
# @param [ConfirmDeliveryReportsAsReceivedRequest] body Required parameter:
|
157
165
|
# Example:
|
166
|
+
# @param [Object] account_header_value The account id to pass to the API
|
158
167
|
# @return Mixed response from the API call
|
159
|
-
def create_confirm_delivery_reports_as_received(body)
|
168
|
+
def create_confirm_delivery_reports_as_received(body, account_header_value=nil)
|
160
169
|
begin
|
161
170
|
@logger.info("create_confirm_delivery_reports_as_received called.")
|
171
|
+
|
172
|
+
request_url = '/v1/delivery_reports/confirmed'
|
173
|
+
|
162
174
|
# Prepare query url.
|
163
175
|
@logger.info("Preparing query URL for create_confirm_delivery_reports_as_received.")
|
164
|
-
|
165
|
-
|
166
|
-
|
176
|
+
query_builder = Configuration.base_uri.dup
|
177
|
+
query_builder << request_url
|
178
|
+
query_url = APIHelper.clean_url query_builder
|
167
179
|
|
168
180
|
# Prepare headers.
|
169
181
|
@logger.info("Preparing headers for create_confirm_delivery_reports_as_received.")
|
170
|
-
|
182
|
+
headers = {
|
171
183
|
'accept' => 'application/json',
|
172
184
|
'content-type' => 'application/json; charset=utf-8'
|
173
185
|
}
|
174
|
-
|
186
|
+
|
187
|
+
add_account_header(headers, account_header_value)
|
188
|
+
|
189
|
+
json_body = body.to_json
|
190
|
+
|
175
191
|
# Prepare and execute HttpRequest.
|
176
192
|
@logger.info('Preparing and executing HttpRequest for create_confirm_delivery_reports_as_received.')
|
177
|
-
|
178
|
-
|
179
|
-
headers:
|
180
|
-
parameters:
|
193
|
+
request = @http_client.post(
|
194
|
+
query_url,
|
195
|
+
headers: headers,
|
196
|
+
parameters: json_body
|
181
197
|
)
|
182
|
-
|
183
|
-
|
198
|
+
|
199
|
+
apply_authentication(request, request_url, json_body)
|
200
|
+
|
201
|
+
context = execute_request(request, name: 'create_confirm_delivery_reports_as_received')
|
184
202
|
|
185
203
|
# Validate response against endpoint and global error codes.
|
186
204
|
@logger.info("Validating response for create_confirm_delivery_reports_as_received.")
|
187
|
-
if
|
205
|
+
if context.response.status_code == 400
|
188
206
|
raise APIException.new(
|
189
207
|
'',
|
190
|
-
|
208
|
+
context
|
191
209
|
)
|
192
210
|
end
|
193
|
-
|
211
|
+
|
212
|
+
validate_response(context)
|
194
213
|
|
195
214
|
# Return appropriate response type.
|
196
215
|
@logger.info("Returning response for create_confirm_delivery_reports_as_received.")
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
decoded
|
216
|
+
return APIHelper.json_deserialize(context.response.raw_body) unless
|
217
|
+
context.response.raw_body.nil? ||
|
218
|
+
context.response.raw_body.to_s.strip.empty?
|
201
219
|
|
202
220
|
rescue Exception => e
|
203
221
|
@logger.error(e)
|
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
module MessageMediaMessages
|
5
5
|
# MessagesController
|
6
|
+
# noinspection RubyResolve,RubyInstanceMethodNamingConvention,RubyStringKeysInHashInspection
|
6
7
|
class MessagesController < BaseController
|
7
8
|
@instance = MessagesController.new
|
8
9
|
|
@@ -36,58 +37,67 @@ module MessageMediaMessages
|
|
36
37
|
# returned*
|
37
38
|
# @param [String] message_id Required parameter: Example:
|
38
39
|
# @param [CancelScheduledMessageRequest] body Required parameter: Example:
|
40
|
+
# @param [Object] account_header_value The account id to pass to the API
|
39
41
|
# @return Mixed response from the API call
|
40
|
-
def update_cancel_scheduled_message(message_id,
|
41
|
-
body)
|
42
|
+
def update_cancel_scheduled_message(message_id, body, account_header_value=nil)
|
42
43
|
begin
|
43
44
|
@logger.info("update_cancel_scheduled_message called.")
|
45
|
+
|
46
|
+
request_url = '/v1/messages/{messageId}'
|
47
|
+
request_url = APIHelper.append_url_with_template_parameters(
|
48
|
+
request_url,
|
49
|
+
'messageId' => message_id
|
50
|
+
)
|
51
|
+
|
44
52
|
# Prepare query url.
|
45
53
|
@logger.info("Preparing query URL for update_cancel_scheduled_message.")
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
'messageId' => message_id
|
51
|
-
)
|
52
|
-
_query_url = APIHelper.clean_url _query_builder
|
53
|
-
|
54
|
+
query_builder = Configuration.base_uri.dup
|
55
|
+
query_builder << request_url
|
56
|
+
query_url = APIHelper.clean_url query_builder
|
57
|
+
|
54
58
|
# Prepare headers.
|
55
59
|
@logger.info("Preparing headers for update_cancel_scheduled_message.")
|
56
|
-
|
60
|
+
headers = {
|
57
61
|
'accept' => 'application/json',
|
58
62
|
'content-type' => 'application/json; charset=utf-8'
|
59
63
|
}
|
60
|
-
|
64
|
+
|
65
|
+
add_account_header(headers, account_header_value)
|
66
|
+
|
67
|
+
json_body = body.to_json
|
68
|
+
|
61
69
|
# Prepare and execute HttpRequest.
|
62
70
|
@logger.info('Preparing and executing HttpRequest for update_cancel_scheduled_message.')
|
63
|
-
|
64
|
-
|
65
|
-
headers:
|
66
|
-
parameters:
|
71
|
+
request = @http_client.put(
|
72
|
+
query_url,
|
73
|
+
headers: headers,
|
74
|
+
parameters: json_body
|
67
75
|
)
|
68
|
-
|
69
|
-
|
70
|
-
|
76
|
+
|
77
|
+
apply_authentication(request, request_url, json_body)
|
78
|
+
|
79
|
+
context = execute_request(request, name: 'update_cancel_scheduled_message')
|
80
|
+
|
71
81
|
# Validate response against endpoint and global error codes.
|
72
82
|
@logger.info("Validating response for update_cancel_scheduled_message.")
|
73
|
-
if
|
83
|
+
if context.response.status_code == 400
|
74
84
|
raise APIException.new(
|
75
85
|
'',
|
76
|
-
|
86
|
+
context
|
77
87
|
)
|
78
|
-
elsif
|
88
|
+
elsif context.response.status_code == 404
|
79
89
|
raise APIException.new(
|
80
90
|
'',
|
81
|
-
|
91
|
+
context
|
82
92
|
)
|
83
93
|
end
|
84
|
-
validate_response(
|
85
|
-
|
94
|
+
validate_response(context)
|
95
|
+
|
86
96
|
# Return appropriate response type.
|
87
97
|
@logger.info("Returning response for update_cancel_scheduled_message.")
|
88
|
-
decoded = APIHelper.json_deserialize(
|
89
|
-
|
90
|
-
|
98
|
+
decoded = APIHelper.json_deserialize(context.response.raw_body) unless
|
99
|
+
context.response.raw_body.nil? ||
|
100
|
+
context.response.raw_body.to_s.strip.empty?
|
91
101
|
decoded
|
92
102
|
|
93
103
|
rescue Exception => e
|
@@ -127,50 +137,58 @@ module MessageMediaMessages
|
|
127
137
|
# the request, then
|
128
138
|
# a HTTP 404 Not Found response will be returned*
|
129
139
|
# @param [String] message_id Required parameter: Example:
|
140
|
+
# @param [Object] account_header_value The account id to pass to the API
|
130
141
|
# @return Mixed response from the API call
|
131
|
-
def get_message_status(message_id)
|
142
|
+
def get_message_status(message_id, account_header_value=nil)
|
132
143
|
begin
|
133
144
|
@logger.info("get_message_status called.")
|
145
|
+
|
146
|
+
request_url = '/v1/messages/{messageId}'
|
147
|
+
request_url = APIHelper.append_url_with_template_parameters(
|
148
|
+
request_url,
|
149
|
+
'messageId' => message_id
|
150
|
+
)
|
151
|
+
|
134
152
|
# Prepare query url.
|
135
153
|
@logger.info("Preparing query URL for get_message_status.")
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
_query_builder,
|
140
|
-
'messageId' => message_id
|
141
|
-
)
|
142
|
-
_query_url = APIHelper.clean_url _query_builder
|
154
|
+
query_builder = Configuration.base_uri.dup
|
155
|
+
query_builder << request_url
|
156
|
+
query_url = APIHelper.clean_url query_builder
|
143
157
|
|
144
158
|
# Prepare headers.
|
145
159
|
@logger.info("Preparing headers for get_message_status.")
|
146
|
-
|
160
|
+
headers = {
|
147
161
|
'accept' => 'application/json'
|
148
162
|
}
|
149
|
-
|
163
|
+
|
164
|
+
add_account_header(headers, account_header_value)
|
165
|
+
|
150
166
|
# Prepare and execute HttpRequest.
|
151
167
|
@logger.info('Preparing and executing HttpRequest for get_message_status.')
|
152
|
-
|
153
|
-
|
154
|
-
headers:
|
168
|
+
request = @http_client.get(
|
169
|
+
query_url,
|
170
|
+
headers: headers
|
155
171
|
)
|
156
|
-
|
157
|
-
|
172
|
+
|
173
|
+
apply_authentication(request, request_url)
|
174
|
+
|
175
|
+
context = execute_request(request, name: 'get_message_status')
|
158
176
|
|
159
177
|
# Validate response against endpoint and global error codes.
|
160
178
|
@logger.info("Validating response for get_message_status.")
|
161
|
-
if
|
179
|
+
if context.response.status_code == 404
|
162
180
|
raise APIException.new(
|
163
181
|
'',
|
164
|
-
|
182
|
+
context
|
165
183
|
)
|
166
184
|
end
|
167
|
-
validate_response(
|
185
|
+
validate_response(context)
|
168
186
|
|
169
187
|
# Return appropriate response type.
|
170
188
|
@logger.info("Returning response for get_message_status.")
|
171
|
-
decoded = APIHelper.json_deserialize(
|
172
|
-
|
173
|
-
|
189
|
+
decoded = APIHelper.json_deserialize(context.response.raw_body) unless
|
190
|
+
context.response.raw_body.nil? ||
|
191
|
+
context.response.raw_body.to_s.strip.empty?
|
174
192
|
decoded
|
175
193
|
|
176
194
|
rescue Exception => e
|
@@ -285,46 +303,55 @@ module MessageMediaMessages
|
|
285
303
|
# valid for the request to be successful.
|
286
304
|
# If any messages in the request are invalid, no messages will be sent.*
|
287
305
|
# @param [SendMessagesRequest] body Required parameter: Example:
|
306
|
+
# @param [Object] account_header_value The account id to pass to the API
|
288
307
|
# @return SendMessagesResponse response from the API call
|
289
|
-
def create_send_messages(body)
|
308
|
+
def create_send_messages(body, account_header_value=nil)
|
290
309
|
begin
|
291
310
|
@logger.info("create_send_messages called.")
|
311
|
+
|
312
|
+
request_url = '/v1/messages'
|
292
313
|
# Prepare query url.
|
293
314
|
@logger.info("Preparing query URL for create_send_messages.")
|
294
|
-
|
295
|
-
|
296
|
-
|
315
|
+
query_builder = Configuration.base_uri.dup
|
316
|
+
query_builder << request_url
|
317
|
+
query_url = APIHelper.clean_url query_builder
|
297
318
|
|
298
319
|
# Prepare headers.
|
299
320
|
@logger.info("Preparing headers for create_send_messages.")
|
300
|
-
|
321
|
+
headers = {
|
301
322
|
'accept' => 'application/json',
|
302
323
|
'content-type' => 'application/json; charset=utf-8'
|
303
324
|
}
|
304
|
-
|
325
|
+
|
326
|
+
add_account_header(headers, account_header_value)
|
327
|
+
|
328
|
+
json_body = body.to_json
|
329
|
+
|
305
330
|
# Prepare and execute HttpRequest.
|
306
331
|
@logger.info('Preparing and executing HttpRequest for create_send_messages.')
|
307
|
-
|
308
|
-
|
309
|
-
headers:
|
310
|
-
parameters:
|
332
|
+
request = @http_client.post(
|
333
|
+
query_url,
|
334
|
+
headers: headers,
|
335
|
+
parameters: json_body
|
311
336
|
)
|
312
|
-
|
313
|
-
|
337
|
+
|
338
|
+
apply_authentication(request, request_url, json_body)
|
339
|
+
|
340
|
+
context = execute_request(request, name: 'create_send_messages')
|
314
341
|
|
315
342
|
# Validate response against endpoint and global error codes.
|
316
343
|
@logger.info("Validating response for create_send_messages.")
|
317
|
-
if
|
344
|
+
if context.response.status_code == 400
|
318
345
|
raise APIException.new(
|
319
346
|
'',
|
320
|
-
|
347
|
+
context
|
321
348
|
)
|
322
349
|
end
|
323
|
-
validate_response(
|
350
|
+
validate_response(context)
|
324
351
|
|
325
352
|
# Return appropriate response type.
|
326
353
|
@logger.info("Returning response for create_send_messages.")
|
327
|
-
decoded = APIHelper.json_deserialize(
|
354
|
+
decoded = APIHelper.json_deserialize(context.response.raw_body)
|
328
355
|
SendMessagesResponse.from_hash(decoded)
|
329
356
|
|
330
357
|
rescue Exception => e
|
@@ -333,4 +360,4 @@ module MessageMediaMessages
|
|
333
360
|
end
|
334
361
|
end
|
335
362
|
end
|
336
|
-
end
|
363
|
+
end
|