messagemedia_messages_sdk 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|