lib/sauce_whisk/jobs.rb in sauce_whisk-0.0.1 vs lib/sauce_whisk/jobs.rb in sauce_whisk-0.0.2

- old
+ new

@@ -1,112 +1,114 @@ require 'json' require 'sauce_whisk/rest_request_builder' -class Jobs - extend RestRequestBuilder +module SauceWhisk + class Jobs + extend RestRequestBuilder - def self.resource - "#{SauceWhisk.username}/jobs" - end + def self.resource + "#{SauceWhisk.username}/jobs" + end - def self.all - all_jobs = JSON.parse get - all_jobs.map {|job| Job.new(job)} - end + def self.all + all_jobs = JSON.parse get + all_jobs.map {|job| Job.new(job)} + end - def self.change_status(job_id, status) - put job_id, {"passed" => status}.to_json - end + def self.change_status(job_id, status) + put job_id, {"passed" => status}.to_json + end - def self.pass_job(job_id) - change_status(job_id, true) - end + def self.pass_job(job_id) + change_status(job_id, true) + end - def self.fail_job(job_id) - change_status(job_id, false) - end + def self.fail_job(job_id) + change_status(job_id, false) + end - def self.save(job) - fields_to_save = job.updated_fields.each_with_object(Hash.new) do |field, hsh| - hsh[field] = job.send(field.to_s) + def self.save(job) + fields_to_save = job.updated_fields.each_with_object(Hash.new) do |field, hsh| + hsh[field] = job.send(field.to_s) + end + put job.id, fields_to_save.to_json end - put job.id, fields_to_save.to_json - end - def self.fetch(job_id) - job_hash = JSON.parse(get job_id) - assets = JSON.parse get "#{job_id}/assets" - screenshots = assets["screenshots"] + def self.fetch(job_id) + job_hash = JSON.parse(get job_id) + assets = JSON.parse get "#{job_id}/assets" + screenshots = assets["screenshots"] - job_hash.merge!({"screenshot_urls" => screenshots}) - Job.new(job_hash) - end + job_hash.merge!({"screenshot_urls" => screenshots}) + Job.new(job_hash) + end - def self.fetch_asset(job_id, asset) - asset = get "#{job_id}/assets/#{asset}" + def self.fetch_asset(job_id, asset) + asset = get "#{job_id}/assets/#{asset}" + end end -end -class Job - attr_writer :updated_fields - - def self.tracked_attr_accessor(*methods) - methods.each do |method| - attr_reader method - self.define_method("#{method}=") do |arg| - if method != arg - updated_fields << method - instance_variable_set("@#{method}", arg) + class Job + attr_writer :updated_fields + + 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 - end - attr_reader :id, :owner, :browser, :browser_version, :os, :log_url - attr_reader :error, :creation_time, :start_time, :end_time, :video_url - attr_reader :screenshot_urls + attr_reader :id, :owner, :browser, :browser_version, :os, :log_url + attr_reader :error, :creation_time, :start_time, :end_time, :video_url + attr_reader :screenshot_urls - tracked_attr_accessor :custom_data, :tags, :name, :visibility, :build, :passed + tracked_attr_accessor :custom_data, :tags, :name, :visibility, :build, :passed - def initialize(parameters={}) - passed = parameters.delete "status" - cd = parameters.delete "custom-data" - visibility = parameters.delete "public" + 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 + self.passed = passed + self.custom_data = cd + self.visibility = visibility - parameters.each do |k,v| - self.instance_variable_set("@#{k}".to_sym, v) + parameters.each do |k,v| + self.instance_variable_set("@#{k}".to_sym, v) + end + + @updated_fields = [] end - @updated_fields = [] - end + def save + Jobs.save(self) + end - def save - Jobs.save(self) - end + def updated_fields + @updated_fields ||= [] + end - def updated_fields - @updated_fields ||= [] - end - - def screenshots - unless @screenshots - @screenshots = screenshot_urls.map do |screenshot| - Assets.fetch id, screenshot + def screenshots + unless @screenshots + @screenshots = screenshot_urls.map do |screenshot| + Assets.fetch id, screenshot + end end + + @screenshots end - @screenshots - end + def video + unless @video + @video = Assets.fetch id, "video.flv", :video + end - def video - unless @video - @video = Assets.fetch id, "video.flv", :video + @video end - - @video end end \ No newline at end of file