module Passwordstate::NetHTTPExtensions
Public Instance Methods
request(req, body = nil) { |res| ... }
click to toggle source
Calls superclass method
# File lib/passwordstate/util.rb, line 45 def request(req, body = nil, &block) return super(req, body, &block) if req.ntlm_auth_information.nil? unless started? @last_body = req.body req.body = nil start do req.delete('connection') return request(req, body, &block) end end type1 = Net::NTLM::Message::Type1.new req['authorization'] = 'NTLM ' + type1.encode64 res = super(req, body) challenge = res['www-authenticate'][/(?:NTLM|Negotiate) (.+)/, 1] if challenge && res.code == '401' type2 = Net::NTLM::Message.decode64 challenge type3 = type2.response(req.ntlm_auth_information, req.ntlm_auth_options.dup) req['authorization'] = 'NTLM ' + type3.encode64 req.body_stream.rewind if req.body_stream req.body = @last_body if @last_body super(req, body, &block) else yield res if block_given? res end end