# File lib/faraday/connection.rb, line 57
    def initialize(url = nil, options = nil)
      if url.is_a?(Hash)
        options = ConnectionOptions.from(url)
        url     = options.url
      else
        options = ConnectionOptions.from(options)
      end

      @parallel_manager = nil
      @headers = Utils::Headers.new
      @params  = Utils::ParamsHash.new
      @options = options.request
      @ssl = options.ssl
      @default_parallel_manager = options.parallel_manager

      @builder = options.builder || begin
        # pass an empty block to Builder so it doesn't assume default middleware
        options.new_builder(block_given? ? Proc.new { |b| } : nil)
      end

      self.url_prefix = url || 'http:/'

      @params.update(options.params)   if options.params
      @headers.update(options.headers) if options.headers

      @proxy = nil
      proxy(options.fetch(:proxy) {
        uri = ENV['http_proxy']
        if uri && !uri.empty?
          uri = 'http://' + uri if uri !~ /^http/i
          uri
        end
      })

      yield(self) if block_given?

      @headers[:user_agent] ||= "Faraday v#{VERSION}"
    end