Sha256: 1ad5a5ced9bc9828fc351ba91d999c023e76bc5df95d0d77ded60c2c8311104e

Contents?: true

Size: 1.31 KB

Versions: 25

Compression:

Stored size: 1.31 KB

Contents

require "cloudstack_client/version"
require "cloudstack_client/api"
require "cloudstack_client/error"
require "cloudstack_client/utils"
require "cloudstack_client/connection"

module CloudstackClient
  class Client < Connection
    include Utils
    attr_accessor :options
    attr_reader :api

    def initialize(api_url, api_key, secret_key, options = {})
      super(api_url, api_key, secret_key, options)
      define_api_methods unless options[:no_api_methods]
    end

    def define_api_methods
      @api = Api.new(@options)
      @api.commands.each do |name, command|
        method_name = camel_case_to_underscore(command["name"]).to_sym

        define_singleton_method(method_name) do |args = {}, options = {}|
          params = { "command" => command["name"] }

          args.each do |k, v|
            k = k.to_s.gsub("_", "")
            if v && @api.command_supports_param?(command["name"], k)
              params[k] = v
            end
          end

          unless @api.all_required_params?(command["name"], params)
            raise ParameterError, @api.missing_params_msg(command["name"])
          end

          if command["isasync"] == false || options[:sync]
            send_request(params)
          else
            send_async_request(params)
          end
        end
      end
    end

  end # class
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
cloudstack_client-1.5.10 lib/cloudstack_client/client.rb
cloudstack_client-1.5.9 lib/cloudstack_client/client.rb
cloudstack_client-1.5.8 lib/cloudstack_client/client.rb
cloudstack_client-1.5.7 lib/cloudstack_client/client.rb
cloudstack_client-1.5.6 lib/cloudstack_client/client.rb
cloudstack_client-1.5.5 lib/cloudstack_client/client.rb
cloudstack_client-1.5.4 lib/cloudstack_client/client.rb
cloudstack_client-1.5.3 lib/cloudstack_client/client.rb
cloudstack_client-1.5.2 lib/cloudstack_client/client.rb
cloudstack_client-1.5.1 lib/cloudstack_client/client.rb
cloudstack_client-1.5.0 lib/cloudstack_client/client.rb
cloudstack_client-1.4.3 lib/cloudstack_client/client.rb
cloudstack_client-1.4.2 lib/cloudstack_client/client.rb
cloudstack_client-1.4.1 lib/cloudstack_client/client.rb
cloudstack_client-1.4.0 lib/cloudstack_client/client.rb
cloudstack_client-1.3.1 lib/cloudstack_client/client.rb
cloudstack_client-1.3.0 lib/cloudstack_client/client.rb
cloudstack_client-1.2.3 lib/cloudstack_client/client.rb
cloudstack_client-1.2.2 lib/cloudstack_client/client.rb
cloudstack_client-1.2.1 lib/cloudstack_client/client.rb