# File lib/fog/rackspace/core.rb, line 101 def self.authenticate(options, connection_options = {}) rackspace_auth_url = options[:rackspace_auth_url] rackspace_auth_url ||= options[:rackspace_endpoint] == Fog::Compute::RackspaceV2::LON_ENDPOINT ? UK_AUTH_ENDPOINT : US_AUTH_ENDPOINT url = rackspace_auth_url.match(/^https?:/) ? rackspace_auth_url : 'https://' + rackspace_auth_url uri = URI.parse(url) connection = Fog::Core::Connection.new(url, false, connection_options) @rackspace_api_key = options[:rackspace_api_key] @rackspace_username = options[:rackspace_username] response = connection.request({ :expects => [200, 204], :headers => { 'X-Auth-Key' => @rackspace_api_key, 'X-Auth-User' => @rackspace_username }, :method => 'GET', :path => (uri.path and not uri.path.empty?) ? uri.path : 'v1.0' }) response.headers.reject do |key, value| !['X-Server-Management-Url', 'X-Storage-Url', 'X-CDN-Management-Url', 'X-Auth-Token'].include?(key) end end
CGI.escape, but without special treatment on spaces
# File lib/fog/rackspace/core.rb, line 137 def self.escape(str,extra_exclude_chars = '') # '-' is a special character inside a regex class so it must be first or last. # Add extra excludes before the final '-' so it always remains trailing, otherwise # an unwanted range is created by mistake. str.gsub(/([^a-zA-Z0-9_.#{extra_exclude_chars}-]+)/) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end end
# File lib/fog/rackspace/core.rb, line 124 def self.json_response?(response) return false unless response && response.headers response.get_header('Content-Type') =~ %r{application/json} ? true : false end
# File lib/fog/rackspace/core.rb, line 129 def self.normalize_url(endpoint) return nil unless endpoint str = endpoint.chomp " " str = str.chomp "/" str.downcase end