Class: Hurley::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/hurley/connection.rb

Instance Method Summary collapse

Instance Method Details

#call(request) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/hurley/connection.rb', line 11

def call(request)
  net_http_connection(request) do |http|
    begin
      Response.new(request) do |res|
        http_res = perform_request(http, request, res)
        res.status_code = http_res.code.to_i
        http_res.each_header do |key, value|
          res.header[key] = value
        end

        # net/http only raises exception on 407 with ssl...?
        if res.status_code == 407
          raise ConnectionFailed, %(407 "Proxy Authentication Required")
        end
      end
    rescue *NET_HTTP_EXCEPTIONS => err
      if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err
        raise SSLError, err
      else
        raise ConnectionFailed, err
      end
    end
  end

rescue ::Timeout::Error => err
  raise Timeout, err
end