class AliyunSDK::RPCClient

The RPCClient class

Attributes

__access_key_id[RW]
__access_key_secret[RW]
__endpoint[RW]
__protocol[RW]
__region_id[RW]
__version[RW]
codes[RW]
credential[RW]

Public Class Methods

new(config) click to toggle source
# File lib/rpc_client.rb, line 58
def initialize(config)
  self.__access_key_id = config[:accessKeyId]
  self.__access_key_secret = config[:accessKeySecret]
  self.__version = config[:apiVersion]
  self.credential = config[:credential]
  self.__endpoint = config[:endpoint]
  self.__region_id = config[:regionId]
  self.__protocol = config[:protocol]
  self.codes = Set.new [200, '200', 'OK', 'Success']
  codes.merge config[:codes] if config[:codes]
end

Public Instance Methods

__default(input, default) click to toggle source
# File lib/rpc_client.rb, line 122
def __default(input, default)
  input || default
end
__default_number(input, default) click to toggle source
# File lib/rpc_client.rb, line 118
def __default_number(input, default)
  input || default
end
__get_access_key_id() click to toggle source
# File lib/rpc_client.rb, line 78
def __get_access_key_id
  __access_key_id
end
__get_access_key_secret() click to toggle source
# File lib/rpc_client.rb, line 82
def __get_access_key_secret
  __access_key_secret
end
__get_endpoint(product, region_id) click to toggle source
# File lib/rpc_client.rb, line 86
def __get_endpoint(product, region_id)
  return __endpoint if __endpoint

  "#{product}.#{region_id}.aliyuncs.com"
end
__get_nonce() click to toggle source
# File lib/rpc_client.rb, line 74
def __get_nonce
  SecureRandom.hex(16)
end
__get_signature(request, access_key_secret) click to toggle source
# File lib/rpc_client.rb, line 126
def __get_signature(request, access_key_secret)
  method = (request['method'] || 'GET').upcase
  normalized = AliyunSDK.normalize(request['query'])
  canonicalized = AliyunSDK.canonicalize(normalized)
  string2sign = "#{method}&#{AliyunSDK.encode('/')}&#{AliyunSDK.encode(canonicalized)}"
  key = access_key_secret + '&'
  Base64.encode64(OpenSSL::HMAC.digest('sha1', key, string2sign)).strip
end
__get_timestamp() click to toggle source
# File lib/rpc_client.rb, line 70
def __get_timestamp
  Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
end
__has_error(body) click to toggle source
# File lib/rpc_client.rb, line 97
def __has_error(body)
  code = body['Code']
  code && !codes.include?(code)
end
__is5xx(response) click to toggle source
# File lib/rpc_client.rb, line 92
def __is5xx(response)
  code = response.code.to_i
  code >= 500 && code < 600
end
__json(response) click to toggle source
# File lib/rpc_client.rb, line 102
def __json(response)
  JSON.parse(response.body)
end
__query(query) click to toggle source
# File lib/rpc_client.rb, line 106
def __query(query)
  target = {}
  query.each do |key, value|
    if value.instance_of?(Array)
      AliyunSDK.replace_repeat_list(target, key, value)
    else
      target[key] = value.to_s
    end
  end
  target
end