22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/qingcloud/sdk/request/preprocessor.rb', line 22
def self.do(input)
input = decorate_input input
config = input[:config]
input[:request_endpoint] = "#{config[:protocol]}://#{config[:host]}:#{config[:port]}"
parsed_params = {}
input[:request_params].each do |param_k, param_v|
if param_v.is_a? Array
param_v.each_with_index do |value, index|
if value.is_a? Hash
value.each do |value_k, value_v|
parsed_params["#{param_k}.#{index}.#{value_k}"] = value_v
end
else
parsed_params["#{param_k}.#{index}"] = value
end
end
elsif param_v.is_a? Hash
param_v.each do |key, value|
parsed_params["#{param_k}.#{key}"] = value
end
else
parsed_params[param_k] = param_v
end
end
input[:request_params] = parsed_params.deep_symbolize_keys!
input[:request_params].update(
action: input[:api_name],
time_stamp: Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ'),
version: 1,
signature_method: 'HmacSHA256',
signature_version: 1,
access_key_id: input[:config][:qy_access_key_id],
)
if input[:properties][:zone] && !input[:properties][:zone].empty?
input[:request_params][:zone] = input[:properties][:zone]
end
Logger.info "Preprocess QingCloud request: [#{input[:id]}] #{input}"
input
end
|