avdi/leadlight

View on GitHub
lib/leadlight/lib_ext/faraday/connection.rb

Summary

Maintainability
A
55 mins
Test Coverage
module Faraday
  class Connection
    def initialize(url = nil, options = {})
      if url.is_a?(Hash)
        options = url
        url     = options[:url]
      end
      @headers = Utils::Headers.new
      @params  = Utils::ParamsHash.new
      @options = options[:request] || {}
      @ssl     = options[:ssl]     || {}
      adapter  = options[:adapter]

      @parallel_manager = nil
      @default_parallel_manager = options[:parallel_manager]

      @builder = options[:builder] || begin
        # pass an empty block to Builder so it doesn't assume default middleware
        block = block_given?? Proc.new {|b| } : nil
        Builder.new(&block)
      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) { ENV['http_proxy'] })

      yield self if block_given?

      if adapter
        self.adapter = adapter
      end
    end

    def_delegators :builder, :adapter=
  end
end