class SauceWhisk::Job

def self.tracked_attr_accessor(*methods)

def self.tracked_attr_accessor(*methods)
  methods.each do |method|
    attr_reader method
    self.send(:define_method, "#{method}=") do |arg|
      if method != arg
        updated_fields << method
        instance_variable_set("@#{method}", arg)
      end
    end
  end
end

def delete

def delete
  Jobs.delete_job id
end

def has_all_asset_names?

def has_all_asset_names?
  !screenshot_urls.nil?
end

def initialize(parameters={})

def initialize(parameters={})
  passed = parameters.delete "status"
  cd = parameters.delete "custom-data"
  visibility = parameters.delete "public"
  self.passed = passed
  self.custom_data = cd
  self.visibility = visibility
  parameters.each do |k,v|
    self.instance_variable_set("@#{k}".to_sym, v)
  end
  @updated_fields = []
end

def save

def save
  Jobs.save(self)
end

def screenshots

def screenshots
  unless @screenshots || screenshot_urls.nil?
   @screenshots = screenshot_urls.map do |screenshot|
      Assets.fetch id, screenshot
    end
  end
  @screenshots
end

def stop

def stop
  Jobs.stop id
end

def updated_fields

def updated_fields
  @updated_fields ||= []
end

def video

def video
  unless @video
    @video = Assets.fetch id, "video.flv", :video
  end
  @video
end