module Net::HTTPHeader
Constants
- CNONCE
Public Instance Methods
basic_auth(user, password)
click to toggle source
# File lib/marklogic/connection.rb, line 53 def basic_auth(user, password) encoded = Base64.encode64("#{user}:#{password}").chomp @header['Authorization'] = ["Basic #{encoded}"] end
capitalize(name)
click to toggle source
diable header capitalization for a performance gain
# File lib/marklogic/connection.rb, line 60 def capitalize(name) name end
create_digest_auth(user, password, response)
click to toggle source
# File lib/marklogic/connection.rb, line 12 def create_digest_auth(user, password, response) # based on http://segment7.net/projects/ruby/snippets/digest_auth.rb @@nonce_count += 1 response['www-authenticate'] =~ /^(\w+) (.*)/ params = {} $2.gsub(/(\w+)="(.*?)"/) { params[$1] = $2 } digest_auth(user, password, params) end
digest_auth(user, password, params)
click to toggle source
# File lib/marklogic/connection.rb, line 24 def digest_auth(user, password, params) a_1 = "#{user}:#{params['realm']}:#{password}" a_2 = "#{@method}:#{@path}" request_digest = '' request_digest << Digest::MD5.new.update(a_1).hexdigest request_digest << ':' << params['nonce'] request_digest << ':' << ('%08x' % @@nonce_count) request_digest << ':' << CNONCE request_digest << ':' << params['qop'] request_digest << ':' << Digest::MD5.new.update(a_2).hexdigest header = [] header << "Digest username=\"#{user}\"" header << "realm=\"#{params['realm']}\"" header << "qop=#{params['qop']}" header << "algorithm=MD5" header << "uri=\"#{@path}\"" header << "nonce=\"#{params['nonce']}\"" header << "nc=#{'%08x' % @@nonce_count}" header << "cnonce=\"#{CNONCE}\"" header << "response=\"#{Digest::MD5.hexdigest(request_digest)}\"" @header['Authorization'] = header params end