Class: CloudstackRubyClient::BaseClient
- Inherits:
-
Object
- Object
- CloudstackRubyClient::BaseClient
- Defined in:
- lib/cloudstack_ruby_client/base_client.rb
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(api_url, api_key, secret_key, use_ssl = nil, open_timeout = 20) ⇒ BaseClient
constructor
A new instance of BaseClient.
- #request(params) ⇒ Object
Constructor Details
#initialize(api_url, api_key, secret_key, use_ssl = nil, open_timeout = 20) ⇒ BaseClient
Returns a new instance of BaseClient.
3 4 5 6 7 8 9 |
# File 'lib/cloudstack_ruby_client/base_client.rb', line 3 def initialize(api_url, api_key, secret_key, use_ssl=nil, open_timeout=20) @api_url = api_url @api_key = api_key @secret_key = secret_key @use_ssl = use_ssl @open_timeout = open_timeout end |
Instance Method Details
#request(params) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/cloudstack_ruby_client/base_client.rb', line 11 def request(params) params['response'] = 'json' params['apiKey'] = @api_key data = params.map{ |k,v| "#{k.to_s}=#{CGI.escape(v.to_s).gsub(/\+|\ /, "%20")}" }.sort.join('&') signature = OpenSSL::HMAC.digest 'sha1', @secret_key, data.downcase signature = Base64.encode64(signature).chomp signature = CGI.escape(signature) url = "#{@api_url}?#{data}&signature=#{signature}" uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = @use_ssl http.open_timeout = @open_timeout # fail the connection faster if can't open socket http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(uri.request_uri) http.request(request) end |