class UCloud::Client

Public Class Methods

new(public_key, private_key, region) click to toggle source
# File lib/ucloud/client.rb, line 9
def initialize(public_key, private_key, region)
  @public_key, @private_key, @region = public_key, private_key, region
  @uri = URI(UCloud::SERVER_URI)
end

Public Instance Methods

execute(action, parameters = {}) click to toggle source
# File lib/ucloud/client.rb, line 14
def execute(action, parameters = {})
  params = parameters.inject({}) do |memo, pair|
    if pair[1].is_a?(Array)
      pair[1].each_with_index{|e, i| memo[[pair[0],i].join('.').to_sym] = e}
    else
      memo[pair[0].to_sym] = pair[1]
    end
    memo
  end
  params[:Region] ||= @region
  params.merge!(Action: action, PublicKey: @public_key)

  res = Net::HTTP.post_form(@uri, sign(params))
  JSON.parse(res.body)
end

Private Instance Methods

sign(params) click to toggle source
# File lib/ucloud/client.rb, line 31
def sign(params)
   params.merge!(Signature: Digest::SHA1.hexdigest(params.sort.flatten.join + @private_key))
end