messagemedia_signingkeys_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 +198 -0
- data/lib/message_media_signing_keys.rb +70 -0
- data/lib/message_media_signing_keys/api_helper.rb +273 -0
- data/lib/message_media_signing_keys/configuration.rb +29 -0
- data/lib/message_media_signing_keys/controllers/base_controller.rb +59 -0
- data/lib/message_media_signing_keys/controllers/signature_key_management_controller.rb +507 -0
- data/lib/message_media_signing_keys/exceptions/api_exception.rb +18 -0
- data/lib/message_media_signing_keys/exceptions/create_signature_key400_response_exception.rb +32 -0
- data/lib/message_media_signing_keys/exceptions/create_signature_key403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/exceptions/delete_signature_key403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/exceptions/disable_the_current_enabled_signature_key403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/exceptions/enable_signature_key400_response_exception.rb +32 -0
- data/lib/message_media_signing_keys/exceptions/enable_signature_key403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/exceptions/get_enabled_signature_key403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/exceptions/get_signature_key_detail400_response_exception.rb +32 -0
- data/lib/message_media_signing_keys/exceptions/get_signature_key_detail403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/exceptions/get_signature_key_list400_response_exception.rb +32 -0
- data/lib/message_media_signing_keys/exceptions/get_signature_key_list403_response_exception.rb +27 -0
- data/lib/message_media_signing_keys/http/auth/basic_auth.rb +20 -0
- data/lib/message_media_signing_keys/http/faraday_client.rb +55 -0
- data/lib/message_media_signing_keys/http/http_call_back.rb +22 -0
- data/lib/message_media_signing_keys/http/http_client.rb +102 -0
- data/lib/message_media_signing_keys/http/http_context.rb +18 -0
- data/lib/message_media_signing_keys/http/http_method_enum.rb +11 -0
- data/lib/message_media_signing_keys/http/http_request.rb +48 -0
- data/lib/message_media_signing_keys/http/http_response.rb +21 -0
- data/lib/message_media_signing_keys/message_media_signing_keys_client.rb +27 -0
- data/lib/message_media_signing_keys/models/base_model.rb +34 -0
- data/lib/message_media_signing_keys/models/create_signature_key_request.rb +42 -0
- data/lib/message_media_signing_keys/models/create_signature_key_response.rb +78 -0
- data/lib/message_media_signing_keys/models/enable_signature_key_request.rb +33 -0
- data/lib/message_media_signing_keys/models/enable_signature_key_response.rb +69 -0
- data/lib/message_media_signing_keys/models/get_enabled_signature_key_response.rb +69 -0
- data/lib/message_media_signing_keys/models/get_signature_key_detail_response.rb +69 -0
- data/lib/message_media_signing_keys/models/get_signature_key_list_response.rb +69 -0
- metadata +164 -0
@@ -0,0 +1,273 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaSigningKeys
|
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, formatting:
|
156
|
+
Configuration.array_serialization))
|
157
|
+
end
|
158
|
+
encoded
|
159
|
+
end
|
160
|
+
|
161
|
+
def self.custom_merge(a, b)
|
162
|
+
x = {}
|
163
|
+
a.each do |key, value_a|
|
164
|
+
b.each do |k, value_b|
|
165
|
+
next unless key == k
|
166
|
+
x[k] = []
|
167
|
+
if value_a.instance_of? Array
|
168
|
+
value_a.each do |v|
|
169
|
+
x[k].push(v)
|
170
|
+
end
|
171
|
+
else
|
172
|
+
x[k].push(value_a)
|
173
|
+
end
|
174
|
+
if value_b.instance_of? Array
|
175
|
+
value_b.each do |v|
|
176
|
+
x[k].push(v)
|
177
|
+
end
|
178
|
+
else
|
179
|
+
x[k].push(value_b)
|
180
|
+
end
|
181
|
+
a.delete(k)
|
182
|
+
b.delete(k)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
x.merge!(a)
|
186
|
+
x.merge!(b)
|
187
|
+
x
|
188
|
+
end
|
189
|
+
|
190
|
+
# Form encodes an object.
|
191
|
+
# @param [Dynamic] An object to form encode.
|
192
|
+
# @param [String] The name of the object.
|
193
|
+
# @return [Hash] A form encoded representation of the object in the form
|
194
|
+
# of a hash.
|
195
|
+
def self.form_encode(obj, instance_name, formatting: 'indexed')
|
196
|
+
retval = {}
|
197
|
+
|
198
|
+
serializable_types = [String, Numeric, TrueClass,
|
199
|
+
FalseClass, Date, DateTime]
|
200
|
+
|
201
|
+
# If this is a structure, resolve it's field names.
|
202
|
+
obj = obj.to_hash if obj.is_a? BaseModel
|
203
|
+
|
204
|
+
# Create a form encoded hash for this object.
|
205
|
+
if obj.nil?
|
206
|
+
nil
|
207
|
+
elsif obj.instance_of? Array
|
208
|
+
if formatting == 'indexed'
|
209
|
+
obj.each_with_index do |value, index|
|
210
|
+
retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
|
211
|
+
index.to_s + ']'))
|
212
|
+
end
|
213
|
+
elsif serializable_types.map { |x| obj[0].is_a? x }.any?
|
214
|
+
obj.each do |value|
|
215
|
+
abc = if formatting == 'unindexed'
|
216
|
+
APIHelper.form_encode(value, instance_name + '[]',
|
217
|
+
formatting: formatting)
|
218
|
+
else
|
219
|
+
APIHelper.form_encode(value, instance_name,
|
220
|
+
formatting: formatting)
|
221
|
+
end
|
222
|
+
retval = APIHelper.custom_merge(retval, abc)
|
223
|
+
# print retval
|
224
|
+
end
|
225
|
+
else
|
226
|
+
obj.each_with_index do |value, index|
|
227
|
+
retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
|
228
|
+
index.to_s + ']', formatting: formatting))
|
229
|
+
end
|
230
|
+
end
|
231
|
+
elsif obj.instance_of? Hash
|
232
|
+
obj.each do |key, value|
|
233
|
+
retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
|
234
|
+
key + ']', formatting: formatting))
|
235
|
+
end
|
236
|
+
else
|
237
|
+
retval[instance_name] = obj
|
238
|
+
end
|
239
|
+
retval
|
240
|
+
end
|
241
|
+
|
242
|
+
# Safely converts a string into an rfc3339 DateTime object
|
243
|
+
# @param [String] The datetime string
|
244
|
+
# @return [DateTime] A DateTime object of rfc3339 format
|
245
|
+
def self.rfc3339(date_time)
|
246
|
+
# missing timezone information
|
247
|
+
if date_time.end_with?('Z') || date_time.index('+')
|
248
|
+
DateTime.rfc3339(date_time)
|
249
|
+
else
|
250
|
+
DateTime.rfc3339(date_time + 'Z')
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
# Extend types to support to_bool.
|
257
|
+
module ToBoolean
|
258
|
+
def to_bool
|
259
|
+
return true if self == true || to_s.strip =~ /^(true|yes|y|1)$/i
|
260
|
+
false
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
# Extend NilClass type to support to_bool.
|
265
|
+
class NilClass; include ToBoolean; end
|
266
|
+
# Extend TrueClass type to support to_bool.
|
267
|
+
class TrueClass; include ToBoolean; end
|
268
|
+
# Extend FalseClass type to support to_bool.
|
269
|
+
class FalseClass; include ToBoolean; end
|
270
|
+
# Extend Numeric type to support to_bool.
|
271
|
+
class Numeric; include ToBoolean; end
|
272
|
+
# Extend String type to support to_bool.
|
273
|
+
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 MessageMediaSigningKeys
|
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,59 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaSigningKeys
|
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-signingkeys-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 CreateSignatureKey403ResponseException.new 'Unexpected error in API call. See HTTP response body for details.', context if
|
54
|
+
context.response.status_code == 403
|
55
|
+
raise APIException.new 'HTTP Response Not OK', context unless
|
56
|
+
context.response.status_code.between?(200, 208) # [200,208] = HTTP OK
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,507 @@
|
|
1
|
+
# This file was automatically generated for MessageMedia by APIMATIC v2.0
|
2
|
+
# ( https://apimatic.io ).
|
3
|
+
|
4
|
+
module MessageMediaSigningKeys
|
5
|
+
# SignatureKeyManagementController
|
6
|
+
class SignatureKeyManagementController < BaseController
|
7
|
+
@instance = SignatureKeyManagementController.new
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_accessor :instance
|
11
|
+
end
|
12
|
+
|
13
|
+
def instance
|
14
|
+
self.class.instance
|
15
|
+
end
|
16
|
+
|
17
|
+
# Disable the current enabled signature key.
|
18
|
+
# A successful request for the ```disable the current enabled signature
|
19
|
+
# key.``` endpoint will return no content when successful.
|
20
|
+
# If there is an enabled key, it will be disabled; and the 204 status code
|
21
|
+
# is returned.
|
22
|
+
# If there is no key or no enabled key, the 204 status code is also
|
23
|
+
# returned.
|
24
|
+
# @param [String] content_type Required parameter: Example:
|
25
|
+
# @param [String] accept Required parameter: Example:
|
26
|
+
# @return void response from the API call
|
27
|
+
def delete_disable_the_current_enabled_signature_key(content_type,
|
28
|
+
accept)
|
29
|
+
begin
|
30
|
+
@logger.info("delete_disable_the_current_enabled_signature_key called.")
|
31
|
+
# Prepare query url.
|
32
|
+
@logger.info("Preparing query URL for delete_disable_the_current_enabled_signature_key.")
|
33
|
+
_query_builder = Configuration.base_uri.dup
|
34
|
+
_query_builder << '/v1/iam/signature_keys/enabled'
|
35
|
+
_query_url = APIHelper.clean_url _query_builder
|
36
|
+
|
37
|
+
# Prepare headers.
|
38
|
+
@logger.info("Preparing headers for delete_disable_the_current_enabled_signature_key.")
|
39
|
+
_headers = {
|
40
|
+
'Content-Type' => content_type,
|
41
|
+
'Accept' => accept
|
42
|
+
}
|
43
|
+
|
44
|
+
# Prepare and execute HttpRequest.
|
45
|
+
@logger.info('Preparing and executing HttpRequest for delete_disable_the_current_enabled_signature_key.')
|
46
|
+
_request = @http_client.delete(
|
47
|
+
_query_url,
|
48
|
+
headers: _headers
|
49
|
+
)
|
50
|
+
BasicAuth.apply(_request)
|
51
|
+
_context = execute_request(_request, name: 'delete_disable_the_current_enabled_signature_key')
|
52
|
+
validate_response(_context)
|
53
|
+
|
54
|
+
rescue Exception => e
|
55
|
+
@logger.error(e)
|
56
|
+
raise e
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Delete a signature key using the key_id returned in the ```create
|
61
|
+
# signature key``` endpoint.
|
62
|
+
# A successful request for the ```delete signature key``` endpoint will
|
63
|
+
# return an empty response body.
|
64
|
+
# *Note: If an invalid or non-existent key_id parameter is specified in the
|
65
|
+
# request, then an HTTP 404 Not Found response will be returned*
|
66
|
+
# @param [String] key_id Required parameter: Example:
|
67
|
+
# @param [String] content_type Required parameter: Example:
|
68
|
+
# @param [String] accept Required parameter: Example:
|
69
|
+
# @return void response from the API call
|
70
|
+
def delete_signature_key(key_id,
|
71
|
+
content_type,
|
72
|
+
accept)
|
73
|
+
begin
|
74
|
+
@logger.info("delete_signature_key called.")
|
75
|
+
# Prepare query url.
|
76
|
+
@logger.info("Preparing query URL for delete_signature_key.")
|
77
|
+
_query_builder = Configuration.base_uri.dup
|
78
|
+
_query_builder << '/v1/iam/signature_keys/{key_id}'
|
79
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
80
|
+
_query_builder,
|
81
|
+
'key_id' => key_id
|
82
|
+
)
|
83
|
+
_query_url = APIHelper.clean_url _query_builder
|
84
|
+
|
85
|
+
# Prepare headers.
|
86
|
+
@logger.info("Preparing headers for delete_signature_key.")
|
87
|
+
_headers = {
|
88
|
+
'Content-Type' => content_type,
|
89
|
+
'Accept' => accept
|
90
|
+
}
|
91
|
+
|
92
|
+
# Prepare and execute HttpRequest.
|
93
|
+
@logger.info('Preparing and executing HttpRequest for delete_signature_key.')
|
94
|
+
_request = @http_client.delete(
|
95
|
+
_query_url,
|
96
|
+
headers: _headers
|
97
|
+
)
|
98
|
+
BasicAuth.apply(_request)
|
99
|
+
_context = execute_request(_request, name: 'delete_signature_key')
|
100
|
+
|
101
|
+
# Validate response against endpoint and global error codes.
|
102
|
+
@logger.info("Validating response for delete_signature_key.")
|
103
|
+
if _context.response.status_code == 404
|
104
|
+
raise DeleteSignatureKey403ResponseException.new(
|
105
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
106
|
+
_context
|
107
|
+
)
|
108
|
+
end
|
109
|
+
validate_response(_context)
|
110
|
+
|
111
|
+
rescue Exception => e
|
112
|
+
@logger.error(e)
|
113
|
+
raise e
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# Retrieve the current detail of a signature key using the key_id returned
|
118
|
+
# in the ```create signature key``` endpoint.
|
119
|
+
# A successful request for the ```get signature key detail``` endpoint will
|
120
|
+
# return a response body as follows:
|
121
|
+
# ```json
|
122
|
+
# {
|
123
|
+
# "key_id": "7ca628a8-08b0-4e42-aeb8-960b37049c31",
|
124
|
+
# "cipher": "RSA",
|
125
|
+
# "digest": "SHA224",
|
126
|
+
# "created": "2018-01-18T10:16:12.364Z",
|
127
|
+
# "enabled": false
|
128
|
+
# }
|
129
|
+
# ```
|
130
|
+
# *Note: If an invalid or non-existent key_id parameter is specified in the
|
131
|
+
# request, then an HTTP 404 Not Found response will be returned*
|
132
|
+
# @param [String] key_id Required parameter: Example:
|
133
|
+
# @param [String] content_type Required parameter: Example:
|
134
|
+
# @param [String] accept Required parameter: Example:
|
135
|
+
# @return GETSignatureKeyDetailResponse response from the API call
|
136
|
+
def get_signature_key_detail(key_id,
|
137
|
+
content_type,
|
138
|
+
accept)
|
139
|
+
begin
|
140
|
+
@logger.info("get_signature_key_detail called.")
|
141
|
+
# Prepare query url.
|
142
|
+
@logger.info("Preparing query URL for get_signature_key_detail.")
|
143
|
+
_query_builder = Configuration.base_uri.dup
|
144
|
+
_query_builder << '/v1/iam/signature_keys/{key_id}'
|
145
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
146
|
+
_query_builder,
|
147
|
+
'key_id' => key_id
|
148
|
+
)
|
149
|
+
_query_url = APIHelper.clean_url _query_builder
|
150
|
+
|
151
|
+
# Prepare headers.
|
152
|
+
@logger.info("Preparing headers for get_signature_key_detail.")
|
153
|
+
_headers = {
|
154
|
+
'Content-Type' => content_type,
|
155
|
+
'Accept' => accept
|
156
|
+
}
|
157
|
+
|
158
|
+
# Prepare and execute HttpRequest.
|
159
|
+
@logger.info('Preparing and executing HttpRequest for get_signature_key_detail.')
|
160
|
+
_request = @http_client.get(
|
161
|
+
_query_url,
|
162
|
+
headers: _headers
|
163
|
+
)
|
164
|
+
BasicAuth.apply(_request)
|
165
|
+
_context = execute_request(_request, name: 'get_signature_key_detail')
|
166
|
+
|
167
|
+
# Validate response against endpoint and global error codes.
|
168
|
+
@logger.info("Validating response for get_signature_key_detail.")
|
169
|
+
if _context.response.status_code == 400
|
170
|
+
raise GETSignatureKeyDetail400ResponseException.new(
|
171
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
172
|
+
_context
|
173
|
+
)
|
174
|
+
elsif _context.response.status_code == 404
|
175
|
+
raise GETSignatureKeyDetail403ResponseException.new(
|
176
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
177
|
+
_context
|
178
|
+
)
|
179
|
+
end
|
180
|
+
validate_response(_context)
|
181
|
+
|
182
|
+
# Return appropriate response type.
|
183
|
+
@logger.info("Returning response for get_signature_key_detail.")
|
184
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body)
|
185
|
+
GETSignatureKeyDetailResponse.from_hash(decoded)
|
186
|
+
|
187
|
+
rescue Exception => e
|
188
|
+
@logger.error(e)
|
189
|
+
raise e
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
# This will create a key pair:
|
194
|
+
# - The ```private key``` stored in MessageMedia is used to create the
|
195
|
+
# signature.
|
196
|
+
# - The ```public key``` is returned and stored at your side to verify the
|
197
|
+
# signature in callbacks.
|
198
|
+
# You need to enable your signature key after creating.
|
199
|
+
# The most basic body has the following structure:
|
200
|
+
# ```json
|
201
|
+
# {
|
202
|
+
# "digest": "SHA224",
|
203
|
+
# "cipher": "RSA"
|
204
|
+
# }
|
205
|
+
# ```
|
206
|
+
# - ```digest``` is used to hash the message. The valid values for digest
|
207
|
+
# type are: SHA224, SHA256, SHA512
|
208
|
+
# - ```cipher``` is used to encrypt the hashed message. The valid value for
|
209
|
+
# cipher type is: RSA
|
210
|
+
# A successful request for the ```create signature key``` endpoint will
|
211
|
+
# return a response body as follows:
|
212
|
+
# ```json
|
213
|
+
# {
|
214
|
+
# "key_id": "7ca628a8-08b0-4e42-aeb8-960b37049c31",
|
215
|
+
# "public_key":
|
216
|
+
# "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTIxtRyT5CuOD74r7UCT+AKzWNxvaAP9myj
|
217
|
+
# AqR7+vBnJKEvoPnmbKTnm6uLlxutnMbjKrnCCWnQ9vtBVnnd+ElhwLDPADfMcJoOqwi7mTcxuc
|
218
|
+
# ckeEbBsfsgYRfdacxgSZL8hVD1hLViQr3xwjEIkJcx1w3x8npvwMuTY0uW8+PjwIDAQAB",
|
219
|
+
# "cipher": "RSA",
|
220
|
+
# "digest": "SHA224",
|
221
|
+
# "created": "2018-01-18T10:16:12.364Z",
|
222
|
+
# "enabled": false
|
223
|
+
# }
|
224
|
+
# ```
|
225
|
+
# The response body of a successful POST request to the ```create signature
|
226
|
+
# key``` endpoint will contain six properties:
|
227
|
+
# - ```key_id``` will be a 36 character UUID which can be used to enable,
|
228
|
+
# delete or get the details.
|
229
|
+
# - ```public_key``` is used to decrypt the signature.
|
230
|
+
# - ```cipher``` same as cipher in request body.
|
231
|
+
# - ```digest``` same as digest in request body.
|
232
|
+
# - ```created``` is the created date.
|
233
|
+
# - ```enabled``` is false for the new signature key. You can use the
|
234
|
+
# ```enable signature key``` endpoint to set this field to true.
|
235
|
+
# @param [String] content_type Required parameter: Example:
|
236
|
+
# @param [String] accept Required parameter: Example:
|
237
|
+
# @param [CreateSignatureKeyRequest] body Required parameter: Example:
|
238
|
+
# @return CreateSignatureKeyResponse response from the API call
|
239
|
+
def create_signature_key(content_type,
|
240
|
+
accept,
|
241
|
+
body)
|
242
|
+
begin
|
243
|
+
@logger.info("create_signature_key called.")
|
244
|
+
# Prepare query url.
|
245
|
+
@logger.info("Preparing query URL for create_signature_key.")
|
246
|
+
_query_builder = Configuration.base_uri.dup
|
247
|
+
_query_builder << '/v1/iam/signature_keys'
|
248
|
+
_query_url = APIHelper.clean_url _query_builder
|
249
|
+
|
250
|
+
# Prepare headers.
|
251
|
+
@logger.info("Preparing headers for create_signature_key.")
|
252
|
+
_headers = {
|
253
|
+
'Content-Type' => content_type,
|
254
|
+
'Accept' => accept
|
255
|
+
}
|
256
|
+
|
257
|
+
# Prepare and execute HttpRequest.
|
258
|
+
@logger.info('Preparing and executing HttpRequest for create_signature_key.')
|
259
|
+
_request = @http_client.post(
|
260
|
+
_query_url,
|
261
|
+
headers: _headers,
|
262
|
+
parameters: body.to_json
|
263
|
+
)
|
264
|
+
BasicAuth.apply(_request)
|
265
|
+
_context = execute_request(_request, name: 'create_signature_key')
|
266
|
+
|
267
|
+
# Validate response against endpoint and global error codes.
|
268
|
+
@logger.info("Validating response for create_signature_key.")
|
269
|
+
if _context.response.status_code == 400
|
270
|
+
raise CreateSignatureKey400ResponseException.new(
|
271
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
272
|
+
_context
|
273
|
+
)
|
274
|
+
end
|
275
|
+
validate_response(_context)
|
276
|
+
|
277
|
+
# Return appropriate response type.
|
278
|
+
@logger.info("Returning response for create_signature_key.")
|
279
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body)
|
280
|
+
CreateSignatureKeyResponse.from_hash(decoded)
|
281
|
+
|
282
|
+
rescue Exception => e
|
283
|
+
@logger.error(e)
|
284
|
+
raise e
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
# Retrieve the currently enabled signature key.
|
289
|
+
# A successful request for the ```get enabled signature key``` endpoint will
|
290
|
+
# return a response body as follows:
|
291
|
+
# ```json
|
292
|
+
# {
|
293
|
+
# "key_id": "7ca628a8-08b0-4e42-aeb8-960b37049c31",
|
294
|
+
# "cipher": "RSA",
|
295
|
+
# "digest": "SHA224",
|
296
|
+
# "created": "2018-01-18T10:16:12.364Z",
|
297
|
+
# "enabled": true
|
298
|
+
# }
|
299
|
+
# ```
|
300
|
+
# *Note: If there is no enabled signature key, then an HTTP 404 Not Found
|
301
|
+
# response will be returned*
|
302
|
+
# @param [String] content_type Required parameter: Example:
|
303
|
+
# @param [String] accept Required parameter: Example:
|
304
|
+
# @return GetEnabledSignatureKeyResponse response from the API call
|
305
|
+
def get_enabled_signature_key(content_type,
|
306
|
+
accept)
|
307
|
+
begin
|
308
|
+
@logger.info("get_enabled_signature_key called.")
|
309
|
+
# Prepare query url.
|
310
|
+
@logger.info("Preparing query URL for get_enabled_signature_key.")
|
311
|
+
_query_builder = Configuration.base_uri.dup
|
312
|
+
_query_builder << '/v1/iam/signature_keys/enabled'
|
313
|
+
_query_url = APIHelper.clean_url _query_builder
|
314
|
+
|
315
|
+
# Prepare headers.
|
316
|
+
@logger.info("Preparing headers for get_enabled_signature_key.")
|
317
|
+
_headers = {
|
318
|
+
'Content-Type' => content_type,
|
319
|
+
'Accept' => accept
|
320
|
+
}
|
321
|
+
|
322
|
+
# Prepare and execute HttpRequest.
|
323
|
+
@logger.info('Preparing and executing HttpRequest for get_enabled_signature_key.')
|
324
|
+
_request = @http_client.get(
|
325
|
+
_query_url,
|
326
|
+
headers: _headers
|
327
|
+
)
|
328
|
+
BasicAuth.apply(_request)
|
329
|
+
_context = execute_request(_request, name: 'get_enabled_signature_key')
|
330
|
+
|
331
|
+
# Validate response against endpoint and global error codes.
|
332
|
+
@logger.info("Validating response for get_enabled_signature_key.")
|
333
|
+
if _context.response.status_code == 404
|
334
|
+
raise GetEnabledSignatureKey403ResponseException.new(
|
335
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
336
|
+
_context
|
337
|
+
)
|
338
|
+
end
|
339
|
+
validate_response(_context)
|
340
|
+
|
341
|
+
# Return appropriate response type.
|
342
|
+
@logger.info("Returning response for get_enabled_signature_key.")
|
343
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body)
|
344
|
+
GetEnabledSignatureKeyResponse.from_hash(decoded)
|
345
|
+
|
346
|
+
rescue Exception => e
|
347
|
+
@logger.error(e)
|
348
|
+
raise e
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
# Enable a signature key using the key_id returned in the ```create
|
353
|
+
# signature key``` endpoint.
|
354
|
+
# There is only one signature key is enabled at the one moment in time. So
|
355
|
+
# if you enable the new signature key, the old one will be disabled.
|
356
|
+
# The most basic body has the following structure:
|
357
|
+
# ```json
|
358
|
+
# {
|
359
|
+
# "key_id": "7ca628a8-08b0-4e42-aeb8-960b37049c31"
|
360
|
+
# }
|
361
|
+
# ```
|
362
|
+
# The response body of a successful PATCH request to ```enable signature
|
363
|
+
# key``` endpoint will contain the ```enabled``` properties with the value
|
364
|
+
# is true as follows:
|
365
|
+
# ```json
|
366
|
+
# {
|
367
|
+
# "key_id": "7ca628a8-08b0-4e42-aeb8-960b37049c31",
|
368
|
+
# "cipher": "RSA",
|
369
|
+
# "digest": "SHA224",
|
370
|
+
# "created": "2018-01-18T10:16:12.364Z",
|
371
|
+
# "enabled": true
|
372
|
+
# }
|
373
|
+
# ```
|
374
|
+
# *Note: If an invalid or non-existent key_id parameter is specified in the
|
375
|
+
# request, then an HTTP 404 Not Found response will be returned*
|
376
|
+
# @param [String] content_type Required parameter: Example:
|
377
|
+
# @param [String] accept Required parameter: Example:
|
378
|
+
# @param [EnableSignatureKeyRequest] body Required parameter: Example:
|
379
|
+
# @return EnableSignatureKeyResponse response from the API call
|
380
|
+
def update_enable_signature_key(content_type,
|
381
|
+
accept,
|
382
|
+
body)
|
383
|
+
begin
|
384
|
+
@logger.info("update_enable_signature_key called.")
|
385
|
+
# Prepare query url.
|
386
|
+
@logger.info("Preparing query URL for update_enable_signature_key.")
|
387
|
+
_query_builder = Configuration.base_uri.dup
|
388
|
+
_query_builder << '/v1/iam/signature_keys/enabled'
|
389
|
+
_query_url = APIHelper.clean_url _query_builder
|
390
|
+
|
391
|
+
# Prepare headers.
|
392
|
+
@logger.info("Preparing headers for update_enable_signature_key.")
|
393
|
+
_headers = {
|
394
|
+
'Content-Type' => content_type,
|
395
|
+
'Accept' => accept
|
396
|
+
}
|
397
|
+
|
398
|
+
# Prepare and execute HttpRequest.
|
399
|
+
@logger.info('Preparing and executing HttpRequest for update_enable_signature_key.')
|
400
|
+
_request = @http_client.patch(
|
401
|
+
_query_url,
|
402
|
+
headers: _headers,
|
403
|
+
parameters: body.to_json
|
404
|
+
)
|
405
|
+
BasicAuth.apply(_request)
|
406
|
+
_context = execute_request(_request, name: 'update_enable_signature_key')
|
407
|
+
|
408
|
+
# Validate response against endpoint and global error codes.
|
409
|
+
@logger.info("Validating response for update_enable_signature_key.")
|
410
|
+
if _context.response.status_code == 400
|
411
|
+
raise EnableSignatureKey400ResponseException.new(
|
412
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
413
|
+
_context
|
414
|
+
)
|
415
|
+
elsif _context.response.status_code == 404
|
416
|
+
raise EnableSignatureKey403ResponseException.new(
|
417
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
418
|
+
_context
|
419
|
+
)
|
420
|
+
end
|
421
|
+
validate_response(_context)
|
422
|
+
|
423
|
+
# Return appropriate response type.
|
424
|
+
@logger.info("Returning response for update_enable_signature_key.")
|
425
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body)
|
426
|
+
EnableSignatureKeyResponse.from_hash(decoded)
|
427
|
+
|
428
|
+
rescue Exception => e
|
429
|
+
@logger.error(e)
|
430
|
+
raise e
|
431
|
+
end
|
432
|
+
end
|
433
|
+
|
434
|
+
# Retrieve the paginated list of signature keys.
|
435
|
+
# A successful request for the ```get signature key list``` endpoint will
|
436
|
+
# return a response body as follows:
|
437
|
+
# ```json
|
438
|
+
# [
|
439
|
+
# {
|
440
|
+
# "key_id": "7ca628a8-08b0-4e42-aeb8-960b37049c31",
|
441
|
+
# "cipher": "RSA",
|
442
|
+
# "digest": "SHA224",
|
443
|
+
# "created": "2018-01-18T10:16:12.364Z",
|
444
|
+
# "enabled": false
|
445
|
+
# }
|
446
|
+
# ]
|
447
|
+
# ```
|
448
|
+
# @param [String] content_type Required parameter: Example:
|
449
|
+
# @param [String] accept Required parameter: Example:
|
450
|
+
# @param [String] page Optional parameter: Example:
|
451
|
+
# @param [String] page_size Optional parameter: Example:
|
452
|
+
# @return List of GETSignatureKeyListResponse response from the API call
|
453
|
+
def get_signature_key_list(content_type,
|
454
|
+
accept,
|
455
|
+
page = nil,
|
456
|
+
page_size = nil)
|
457
|
+
begin
|
458
|
+
@logger.info("get_signature_key_list called.")
|
459
|
+
# Prepare query url.
|
460
|
+
@logger.info("Preparing query URL for get_signature_key_list.")
|
461
|
+
_query_builder = Configuration.base_uri.dup
|
462
|
+
_query_builder << '/v1/iam/signature_keys?page={page}&page_size={page_size}'
|
463
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
464
|
+
_query_builder,
|
465
|
+
'page' => page,
|
466
|
+
'page_size' => page_size
|
467
|
+
)
|
468
|
+
_query_url = APIHelper.clean_url _query_builder
|
469
|
+
|
470
|
+
# Prepare headers.
|
471
|
+
@logger.info("Preparing headers for get_signature_key_list.")
|
472
|
+
_headers = {
|
473
|
+
'Content-Type' => content_type,
|
474
|
+
'Accept' => accept
|
475
|
+
}
|
476
|
+
|
477
|
+
# Prepare and execute HttpRequest.
|
478
|
+
@logger.info('Preparing and executing HttpRequest for get_signature_key_list.')
|
479
|
+
_request = @http_client.get(
|
480
|
+
_query_url,
|
481
|
+
headers: _headers
|
482
|
+
)
|
483
|
+
BasicAuth.apply(_request)
|
484
|
+
_context = execute_request(_request, name: 'get_signature_key_list')
|
485
|
+
|
486
|
+
# Validate response against endpoint and global error codes.
|
487
|
+
@logger.info("Validating response for get_signature_key_list.")
|
488
|
+
if _context.response.status_code == 400
|
489
|
+
raise GETSignatureKeyList400ResponseException.new(
|
490
|
+
'Unexpected error in API call. See HTTP response body for details.',
|
491
|
+
_context
|
492
|
+
)
|
493
|
+
end
|
494
|
+
validate_response(_context)
|
495
|
+
|
496
|
+
# Return appropriate response type.
|
497
|
+
@logger.info("Returning response for get_signature_key_list.")
|
498
|
+
decoded = APIHelper.json_deserialize(_context.response.raw_body)
|
499
|
+
decoded.map { |element| GETSignatureKeyListResponse.from_hash(element) }
|
500
|
+
|
501
|
+
rescue Exception => e
|
502
|
+
@logger.error(e)
|
503
|
+
raise e
|
504
|
+
end
|
505
|
+
end
|
506
|
+
end
|
507
|
+
end
|