class QingCloud::SDK::Request
Attributes
http_request[RW]
http_response[RW]
input[RW]
request_url[RW]
Public Class Methods
new(input)
click to toggle source
# File lib/qingcloud/sdk/request/request.rb, line 26 def initialize(input) self.input = Preprocessor.do input end
Public Instance Methods
send()
click to toggle source
# File lib/qingcloud/sdk/request/request.rb, line 30 def send check build perform unpack end
Private Instance Methods
build()
click to toggle source
# File lib/qingcloud/sdk/request/request.rb, line 48 def build self.input = Signer.do input params = input[:request_params].map { |k, v| "#{k}=#{v}" } query_string = !params.empty? ? "?#{params.join '&'}" : '' self.request_url = "#{input[:request_endpoint]}#{input[:config][:uri]}#{query_string}" self.http_request = Net::HTTP::Get.new request_url end
check()
click to toggle source
# File lib/qingcloud/sdk/request/request.rb, line 39 def check unless !input[:config][:qy_access_key_id].nil? && !input[:config][:qy_access_key_id].empty? raise SDKError, 'access key not provided' end unless !input[:config][:qy_secret_access_key].nil? && !input[:config][:qy_secret_access_key].empty? raise SDKError, 'secret access key not provided' end end
perform()
click to toggle source
# File lib/qingcloud/sdk/request/request.rb, line 58 def perform retries = input[:config][:connection_retries] while begin Logger.info "Sending request: [#{input[:id]}] #{request_url}" self.http_response = input[:config].connection.request request_url, http_request rescue SocketError retries > 0 ? retries -= 1 : (raise NetworkError) sleep 1 next end break end end
unpack()
click to toggle source
# File lib/qingcloud/sdk/request/request.rb, line 73 def unpack output = JSON.parse(http_response.body) Logger.info "Parse response: [#{input[:id]}] #{output}" output.deep_symbolize_keys! end