lib/loopiator/client.rb in loopiator-0.3.0 vs lib/loopiator/client.rb in loopiator-0.3.1
- old
+ new
@@ -5,18 +5,19 @@
class Client
attr_accessor :client
include Loopiator::Logger
- def initialize(connection_options = nil)
+ def initialize(connection_options = {})
set_client(connection_options)
end
- def set_client(connection_options = nil)
- self.client = XMLRPC::Client.new_from_hash(generate_connection_options(connection_options))
- self.client.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
- self.client
+ def set_client(connection_options = {})
+ connection_options = generate_connection_options(connection_options)
+
+ self.client = XMLRPC::Client.new_from_hash(connection_options)
+ set_client_options(connection_options)
end
def call(rpc_method, *args)
response = nil
@@ -47,21 +48,38 @@
include Loopiator::Domains
include Loopiator::Credits
private
- def generate_connection_options(connection_options = nil)
- connection_options ||= {
- host: Loopiator.configuration.host,
- path: Loopiator.configuration.path,
- port: Loopiator.configuration.port,
- use_ssl: Loopiator.configuration.use_ssl,
- timeout: Loopiator.configuration.timeout,
- proxy_host: Loopiator.configuration.proxy_host,
- proxy_port: Loopiator.configuration.proxy_port,
- user: Loopiator.configuration.proxy_user,
- password: Loopiator.configuration.proxy_password,
+ def generate_connection_options(connection_options = {})
+ default_options = {
+ host: Loopiator.configuration.host,
+ path: Loopiator.configuration.path,
+ port: Loopiator.configuration.port,
+
+ user: Loopiator.configuration.auth_user,
+ password: Loopiator.configuration.auth_password,
+
+ use_ssl: Loopiator.configuration.use_ssl,
+ timeout: Loopiator.configuration.timeout,
+
+ proxy_host: Loopiator.configuration.proxy_host,
+ proxy_port: Loopiator.configuration.proxy_port,
+ proxy_user: Loopiator.configuration.proxy_user,
+ proxy_password: Loopiator.configuration.proxy_password,
}
+
+ default_options.merge(connection_options)
+ end
+
+ def set_client_options(connection_options = {})
+ self.client.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
+
+ #Seems to be the only way to set the proxy user / password for Ruby's XMLRPC?
+ proxy_user = connection_options.fetch(:proxy_user, nil)
+ proxy_password = connection_options.fetch(:proxy_password, nil)
+ self.client.instance_variable_get(:@http).instance_variable_set(:@proxy_user, proxy_user) if (proxy_user && !proxy_user.empty?)
+ self.client.instance_variable_get(:@http).instance_variable_set(:@proxy_pass, proxy_password) if (proxy_password && !proxy_password.empty?)
end
end
end
\ No newline at end of file