require 'faraday'

module Nominatim
  class Client

    # Performs an HTTP GET request
    def get(path, params = {})
      connection.get path, params
    end

    private

    # Returns a Faraday::Connection object
    #
    # @return [Faraday::Connection]
    def connection
      return @connection if defined? @connection

      @connection = Faraday.new Nominatim.config.endpoint do |builder|
        builder.use Nominatim::Response::ParseJson
        builder.adapter Faraday.default_adapter
      end

      @connection.params[:format] = 'json'
      @connection.params[:email] = Nominatim.config.email if Nominatim.config.email

      @connection.headers[:user_agent] = Nominatim.config.user_agent

      @connection
    end
  end
end