require 'open-uri' require 'helix_web_services_client/open_model' class HelixWebServicesClient def jobs arr = execute_method_no_body(:get, hve_path('jobs')) arr.map { |x| OpenModel.new(x) } end # Returns the array of jobs in the system. Each job model is simply a hash # of string -> string values, since each system can very likely adjust # job output. def job(job_id) obj = execute_method_no_body(:get, hve_path("jobs/#{URI.encode(job_id)}")) OpenModel.new(obj) end # Creates a new job in the system. def create_job(job) job = OpenModel.new(job) unless job.is_a?(OpenModel) job.Job = 'new' unless job.job job.Status = 'open' unless job.status execute_method_with_body(:post, hve_path('jobs'), job.marshal_dump) end # Updates the job specification. def update_job(job) job = OpenModel.new(job) unless job.is_a?(OpenModel) execute_method_with_body(:patch, hve_path("jobs/#{URI.encode(job['Job'])}"), job.marshal_dump) end # Deletes the job specification in the system. def delete_job(job_id) execute_method_no_body(:delete, hve_path("jobs/#{URI.encode(job_id)}")) end end