require 'faraday_middleware'
require 'open311/response/raise_error'

module Open311
  class Client
    # @private
    module Connection
    private

      def options
        {
          # :headers => {'Accept' => "*/#{format}", 'User-Agent' => user_agent},
          proxy: proxy,
          ssl: {verify: false},
          url: endpoint,
        }
      end

      def connection
        Faraday.new(options) do |connection|
          connection.use Faraday::Request::Multipart
          connection.use Faraday::Response::Mashify
          case format.to_s.downcase
          when 'json' then connection.use Faraday::Response::ParseJson
          when 'xml' then connection.use Faraday::Response::ParseXml
          end
          connection.use Open311::Response::RaiseError
          connection.adapter(adapter)
        end
      end
    end
  end
end
