class Describer
  attr_accessor :x, :y, :driver

  def initialize(params)
    ensure_required_params(params)
    self.x = params[:x]
    self.y = params[:y]
    self.driver = Driver.new(params)
  end

  def run
    driver.ensure_device_exists
    driver.describe_point(x, y)
  end

  def ensure_required_params(params)
    Logger.error('UDID should be provided') if params[:udid].nil?
    Logger.error('`x` point coordinate should be provided') if params[:x].nil? || params[:x].to_i.to_s != params[:x].to_s
    Logger.error('`y` point coordinate should be provided') if params[:y].nil? || params[:y].to_i.to_s != params[:y].to_s
  end
end