module APIParticulier
  module Error
    class HttpError < ::StandardError
      def initialize(response)
        connect_time = response.connect_time
        curl_message = response.return_message
        http_error_code = response.code
        datetime = response.headers.fetch('Date', DateTime.current.inspect)
        total_time = response.total_time

        uri = URI.parse(response.effective_url)
        url = "#{uri.host}#{uri.path}"

        msg = <<~TEXT
          url: #{url}
          HTTP error code: #{http_error_code}
          #{response.body.force_encoding('UTF-8')}
          curl message: #{curl_message}
          total time: #{total_time}
          connect time: #{connect_time}
          datetime: #{datetime}
        TEXT

        super(msg)
      end
    end

    class RequestFailed < HttpError; end

    class Unauthorized < HttpError; end
  end
end