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