class AliyunIot::Request::Json
Attributes
body[R]
client[R]
method[R]
params[R]
url[R]
Public Class Methods
new(method: "post", params: {})
click to toggle source
# File lib/aliyun_iot/request/json.rb, line 21 def initialize(method: "post", params: {}) @params = params @method = method @client = HttpClient.new(base_url) end
Public Instance Methods
execute()
click to toggle source
# File lib/aliyun_iot/request/json.rb, line 27 def execute ts = Time.now.utc.strftime('%FT%TZ') base_params = { Format: 'JSON', Version: '2018-01-20', AccessKeyId: access_key_id, SignatureMethod: 'HMAC-SHA1', Timestamp: ts, SignatureVersion: '1.0', SignatureNonce: SecureRandom.uuid, RegionId: region_id, ServiceCode: 'iot', } exec_params = encode base_params.merge!(params) begin JSON.parse client.send(method, exec_params).body rescue => e logger = Logger.new(STDOUT) logger.error e.message logger.error e.backtrace.join("\n") raise e end end
Private Instance Methods
configuration()
click to toggle source
# File lib/aliyun_iot/request/json.rb, line 53 def configuration AliyunIot.configuration end
encode(encode_params)
click to toggle source
# File lib/aliyun_iot/request/json.rb, line 57 def encode(encode_params) str = ERB::Util.url_encode(encode_params.to_param) string_to_sign = "#{method.upcase}&%2F&#{str}" sign = Base64.encode64(OpenSSL::HMAC.digest("sha1", "#{access_key_secret}&", string_to_sign)).chop encode_params.merge({ Signature: sign }) end