lib/cloudfiles/authentication.rb in cloudfiles-1.4.18 vs lib/cloudfiles/authentication.rb in cloudfiles-1.5.0

- old
+ new

@@ -6,56 +6,41 @@ # Performs an authentication to the Cloud Files servers. Opens a new HTTP connection to the API server, # sends the credentials, and looks for a successful authentication. If it succeeds, it sets the cdmmgmthost, # cdmmgmtpath, storagehost, storagepath, authtoken, and authok variables on the connection. If it fails, it raises # an CloudFiles::Exception::Authentication exception. # - # Should probably never be called directly. + # Should never be called directly. def initialize(connection) - parsed_auth_url = URI.parse(connection.auth_url) - path = parsed_auth_url.path - hdrhash = { "X-Auth-User" => connection.authuser, "X-Auth-Key" => connection.authkey } begin - server = get_server(connection, parsed_auth_url) - - if parsed_auth_url.scheme == "https" - server.use_ssl = true - server.verify_mode = OpenSSL::SSL::VERIFY_NONE - end - server.start - rescue Exception => e + storage_url, auth_token, headers = SwiftClient.get_auth(connection.auth_url, connection.authuser, connection.authkey, connection.snet?) + rescue => e # uncomment if you suspect a problem with this branch of code -# $stderr.puts "got error #{e.class}: #{e.message.inspect}\n" << e.traceback.map{|n| "\t#{n}"}.join("\n") - raise CloudFiles::Exception::Connection, "Unable to connect to #{server.address}", caller + # $stderr.puts "got error #{e.class}: #{e.message.inspect}\n" << e.traceback.map{|n| "\t#{n}"}.join("\n") + raise CloudFiles::Exception::Connection, "Unable to connect to #{connection.auth_url}", caller end - response = server.get(path, hdrhash) - if (response.code =~ /^20./) - if response["x-cdn-management-url"] + if auth_token + if headers["x-cdn-management-url"] connection.cdn_available = true - parsed_cdn_url = URI.parse(response["x-cdn-management-url"]) + parsed_cdn_url = URI.parse(headers["x-cdn-management-url"]) connection.cdnmgmthost = parsed_cdn_url.host connection.cdnmgmtpath = parsed_cdn_url.path connection.cdnmgmtport = parsed_cdn_url.port connection.cdnmgmtscheme = parsed_cdn_url.scheme end - parsed_storage_url = URI.parse(response["x-storage-url"]) + parsed_storage_url = URI.parse(headers["x-storage-url"]) connection.storagehost = set_snet(connection, parsed_storage_url.host) connection.storagepath = parsed_storage_url.path connection.storageport = parsed_storage_url.port connection.storagescheme = parsed_storage_url.scheme - connection.authtoken = response["x-auth-token"] + connection.authtoken = headers["x-auth-token"] connection.authok = true else connection.authtoken = false raise CloudFiles::Exception::Authentication, "Authentication failed" end - server.finish end private - - def get_server(connection, parsed_auth_url) - Net::HTTP::Proxy(connection.proxy_host, connection.proxy_port).new(parsed_auth_url.host, parsed_auth_url.port) - end def set_snet(connection, hostname) if connection.snet? "snet-#{hostname}" else