class QingCloud::SDK::Preprocessor
Public Class Methods
compact(object)
click to toggle source
# File lib/qingcloud/sdk/request/preprocessor.rb, line 72 def self.compact(object) object.each do |k, v| object[k] = compact v if v.is_a? Hash object.delete k if v.nil? || v == '' end object end
decorate_input(input)
click to toggle source
# File lib/qingcloud/sdk/request/preprocessor.rb, line 66 def self.decorate_input(input) input.deep_symbolize_keys! input[:id] = (Random.new.rand * 1_000_000).to_int compact input end
do(input)
click to toggle source
# 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