def initialize(end_point, username, password, use_debug=false, preferred_api_versions = CLIENT_API_VERSIONS)
@debug = use_debug
@end_point = end_point
@server_api_versions = []
debug "Connecting to #{end_point}"
credentials = nil
userpass = "#{username}:#{password}"
if RUBY_VERSION.to_f == 1.8
credentials = Base64.encode64(userpass).delete("\n")
else
credentials = Base64.strict_encode64(userpass)
end
@@headers["Authorization"] = "Basic #{credentials}"
@@headers["User-Agent"] = RHC::Helpers.user_agent rescue nil
RestClient.proxy = URI.parse(ENV['http_proxy']).to_s if ENV['http_proxy']
begin
debug "Client supports API versions #{preferred_api_versions.join(', ')}"
@client_api_versions = preferred_api_versions
default_request = new_request(:url => @end_point, :method => :get, :headers => @@headers)
@server_api_versions, links = api_info(default_request)
debug "Server supports API versions #{@server_api_versions.join(', ')}"
if api_version_negotiated
unless server_api_version_current?
debug "Client API version #{api_version_negotiated} is not current. Refetching API"
@@headers["Accept"] = "application/json; version=#{api_version_negotiated}"
req = new_request(:url => @end_point, :method => :get, :headers => @@headers)
@server_api_versions, links = api_info req
end
else
warn_about_api_versions
end
end
super({:links => links}, use_debug)
end