diff --git a/examples/rails_openid/app/controllers/server_controller.rb b/examples/rails_openid/app/controllers/server_controller.rb index 154e780a..95156495 100644 --- a/examples/rails_openid/app/controllers/server_controller.rb +++ b/examples/rails_openid/app/controllers/server_controller.rb @@ -242,7 +242,7 @@ def render_response(oidresp) end web_response = server.encode_response(oidresp) - case web_response.code + case web_response.status when HTTP_OK render :text => web_response.body, :status => 200 diff --git a/lib/openid/consumer/discovery.rb b/lib/openid/consumer/discovery.rb index a1c2257e..661da67c 100644 --- a/lib/openid/consumer/discovery.rb +++ b/lib/openid/consumer/discovery.rb @@ -58,7 +58,7 @@ def initialize def display_identifier return @display_identifier if @display_identifier - return @claimed_id if @claimed_id.nil? + return @claimed_id if @claimed_id.nil? begin parsed_identifier = URI.parse(@claimed_id) @@ -394,7 +394,7 @@ def self.discover_yadis(uri) # # @param uri: normalized identity URL # @type uri: str - # + # # @return: (claimed_id, services) # @rtype: (str, list(OpenIDServiceEndpoint)) # @@ -468,10 +468,10 @@ def self.discover_xri(iname) def self.discover_no_yadis(uri) http_resp = OpenID.fetch(uri) - if http_resp.code != "200" and http_resp.code != "206" + if http_resp.status != 200 and http_resp.status != 206 raise DiscoveryFailure.new( "HTTP Response status from identity URL host is not \"200\". "\ - "Got status #{http_resp.code.inspect}", http_resp) + "Got status #{http_resp.status.inspect}", http_resp) end claimed_id = http_resp.final_url diff --git a/lib/openid/fetchers.rb b/lib/openid/fetchers.rb index db5443f0..0aa8887c 100644 --- a/lib/openid/fetchers.rb +++ b/lib/openid/fetchers.rb @@ -111,7 +111,7 @@ def self.fetcher_use_env_http_proxy @fetcher = StandardFetcher.new(proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password) end - + class StandardFetcher USER_AGENT = "ruby-openid/#{OpenID::VERSION} (#{RUBY_PLATFORM})" @@ -189,32 +189,19 @@ def fetch(url, body=nil, headers=nil, redirect_limit=REDIRECT_LIMIT) headers['User-agent'] ||= USER_AGENT begin - conn = make_connection(url) - response = nil - - whole_body = '' - body_size_limitter = lambda do |r| - r.read_body do |partial| # read body now - whole_body << partial - if whole_body.length > MAX_RESPONSE_KB - raise FetchingError.new("Response Too Large") - end + conn = Faraday.new(url: url) + response = if body.nil? + conn.get do |req| + req.headers = headers end - whole_body - end - response = conn.start { - # Check the certificate against the URL's hostname - if supports_ssl?(conn) and conn.use_ssl? - conn.post_connection_check(url.host) + else + headers["Content-type"] ||= "application/x-www-form-urlencoded" + conn.post do |req| + req.headers = headers + req.body = body end + end - if body.nil? - conn.request_get(url.request_uri, headers, &body_size_limitter) - else - headers["Content-type"] ||= "application/x-www-form-urlencoded" - conn.request_post(url.request_uri, body, headers, &body_size_limitter) - end - } rescue Timeout::Error => why raise FetchingError, "Error fetching #{url}: #{why}" rescue RuntimeError => why @@ -242,7 +229,6 @@ def fetch(url, body=nil, headers=nil, redirect_limit=REDIRECT_LIMIT) end else response = HTTPResponse._from_net_response(response, unparsed_url) - response.body = whole_body setup_encoding(response) return response end @@ -251,12 +237,12 @@ def fetch(url, body=nil, headers=nil, redirect_limit=REDIRECT_LIMIT) private def setup_encoding(response) return unless defined?(Encoding.default_external) - return unless charset = response.type_params["charset"] - - begin - encoding = Encoding.find(charset) - rescue ArgumentError - end + # return unless charset = response.type_params["charset"] + # charset = 'UTF-8' + # begin + # encoding = Encoding.find(charset) + # rescue ArgumentError + # end encoding ||= Encoding.default_external body = response.body diff --git a/lib/openid/kvpost.rb b/lib/openid/kvpost.rb index 1495afe7..333ef760 100644 --- a/lib/openid/kvpost.rb +++ b/lib/openid/kvpost.rb @@ -30,7 +30,7 @@ class HTTPStatusError < OpenIDError class Message def self.from_http_response(response, server_url) msg = self.from_kvform(response.body) - case response.code.to_i + case response.status when 200 return msg when 206 @@ -39,7 +39,7 @@ def self.from_http_response(response, server_url) raise ServerError.from_message(msg) else error_message = "bad status code from server #{server_url}: "\ - "#{response.code}" + "#{response.status}" raise HTTPStatusError.new(error_message) end end diff --git a/lib/openid/yadis/discovery.rb b/lib/openid/yadis/discovery.rb index 55d6f09b..6e026ddf 100644 --- a/lib/openid/yadis/discovery.rb +++ b/lib/openid/yadis/discovery.rb @@ -75,18 +75,17 @@ def self.discover(uri) result = DiscoveryResult.new(uri) begin resp = OpenID.fetch(uri, nil, {'Accept' => YADIS_ACCEPT_HEADER}) - rescue Exception + rescue Exception => e raise DiscoveryFailure.new("Failed to fetch identity URL #{uri} : #{$!}", $!) end - if resp.code != "200" and resp.code != "206" + if resp.status != 200 and resp.status != 206 raise DiscoveryFailure.new( "HTTP Response status from identity URL host is not \"200\"."\ - "Got status #{resp.code.inspect} for #{resp.final_url}", resp) + "Got status #{resp.status} for #{resp.final_url}", resp) end # Note the URL after following redirects result.normalized_uri = resp.final_url - # Attempt to find out where to go to discover the document or if # we already have it result.content_type = resp['content-type'] @@ -99,10 +98,10 @@ def self.discover(uri) rescue raise DiscoveryFailure.new("Failed to fetch Yadis URL #{result.xrds_uri} : #{$!}", $!) end - if resp.code != "200" and resp.code != "206" + if resp.status != 200 and resp.status != 206 exc = DiscoveryFailure.new( "HTTP Response status from Yadis host is not \"200\". " + - "Got status #{resp.code.inspect} for #{resp.final_url}", resp) + "Got status #{resp.status.inspect} for #{resp.final_url}", resp) exc.identity_url = result.normalized_uri raise exc end