class SauceWhisk::Jobs
def self.all
def self.all all_jobs = JSON.parse get all_jobs.map {|job| Job.new(job)} end
def self.change_status(job_id, status)
def self.change_status(job_id, status) put job_id, {"passed" => status}.to_json rescue StandardError => e SauceWhisk.logger.error "Unable to change_status for #{job_id} to #{status}\nReason: #{e.to_s}" end
def self.delete_job(job_id)
def self.delete_job(job_id) delete "#{job_id}" end
def self.fail_job(job_id)
def self.fail_job(job_id) change_status(job_id, false) end
def self.fetch(job_id)
def self.fetch(job_id) job_hash = {} begin job_hash = JSON.parse(get job_id) assets = job_assets job_id job_hash.merge! assets rescue SauceWhisk::JobNotComplete # Always succeed end return Job.new(job_hash) end
def self.fetch!(job_id)
def self.fetch!(job_id) job_hash = JSON.parse(get job_id) assets = job_assets job_id job_hash.merge! assets Job.new job_hash end
def self.fetch_asset(job_id, asset)
def self.fetch_asset(job_id, asset) asset = get "#{job_id}/assets/#{asset}" end
def self.job_assets(job_id)
def self.job_assets(job_id) assets = JSON.parse get "#{job_id}/assets" screenshots = assets["screenshots"] {"screenshot_urls" => screenshots} rescue RestClient::BadRequest => e if (/Job hasn't finished running/.match e.response) SauceWhisk.logger.debug("Exception fetching assets: #{e.message} - #{e.response}") raise SauceWhisk::JobNotComplete else SauceWhisk.logger.error("Exception fetching assets: #{e.message} - #{e.response}") raise e end end
def self.pass_job(job_id)
def self.pass_job(job_id) change_status(job_id, true) end
def self.resource
def self.resource "#{SauceWhisk.username}/jobs" end
def self.save(job)
def self.save(job) fields_to_save = job.updated_fields.each_with_object(Hash.new) do |field, hsh| if field == :custom_data hsh[:'custom-data'] = job.send(field.to_s) else hsh[field] = job.send(field.to_s) end end put job.id, fields_to_save.to_json end
def self.stop(job_id)
def self.stop(job_id) put "#{job_id}/stop", {} end