class Scirocco::Client
Constants
- API_POLL_SEC
Attributes
api_key[RW]
host[RW]
last_request[RW]
open_timeout[RW]
port[RW]
request_timeout[RW]
scheme[RW]
version[RW]
Public Class Methods
new(api_key, options={})
click to toggle source
# File lib/scirocco/client.rb, line 10 def initialize(api_key, options={}) @api_key = api_key @scheme, @host, @port, @version, @request_timeout, @open_timeout = { scheme: "https", host: HOSTNAME, port: 443, version: API_VERSION, request_timeout: 600, open_timeout: 10 }.merge(options.symbolize_keys).values end
Public Instance Methods
abort_all()
click to toggle source
# File lib/scirocco/client.rb, line 88 def abort_all url = build_url("tests", "abort_all") data = { :api_key => @api_key, } post(url, data) end
abort_test(test_job_id)
click to toggle source
# File lib/scirocco/client.rb, line 79 def abort_test(test_job_id) url = build_url("tests", "abort") data = { :api_key => @api_key, :test_job_id => test_job_id } post(url, data) end
apps(project_id)
click to toggle source
App API
# File lib/scirocco/client.rb, line 101 def apps(project_id) url = build_url("apps") get(url, {:project_id => project_id}) end
build_url(type, resource=nil)
click to toggle source
# File lib/scirocco/client.rb, line 117 def build_url(type, resource=nil) @scheme + "://" + [@host + ":" + @port.to_s, "api", @version, type, resource].compact.join("/") + "/" end
check_test(test_job_id)
click to toggle source
# File lib/scirocco/client.rb, line 73 def check_test(test_job_id) url = build_url("tests", "check") params = { test_job_id: test_job_id } get(url, params) end
devices(project_id, params={})
click to toggle source
Device API
# File lib/scirocco/client.rb, line 31 def devices(project_id, params={}) url = build_url("devices") get(url, {:project_id => project_id}.merge(params)) end
get(url, params={})
click to toggle source
# File lib/scirocco/client.rb, line 121 def get(url, params={}) @last_request = { url: url, request: params } query_string_params = params.collect{ |p| "&#{p[0].to_s}=#{p[1].to_s}" }.join #p "#{url}?api_key=#{@api_key}#{query_string_params}" begin response = RestClient::Request.execute(:method => :get, :url => "#{url}?api_key=#{@api_key}#{query_string_params}", :timeout => @request_timeout, :open_timeout => @open_timeout) @last_request[:response] = response return JSON.parse(response) rescue => err if err.response pp JSON.parse(err.response) raise err.message else raise err end end end
poll_test_result(test_job_id)
click to toggle source
Checks for when test completes
# File lib/scirocco/client.rb, line 58 def poll_test_result(test_job_id) status = nil while !['passed', 'failed'].include?(status) sleep(API_POLL_SEC) test_status = check_test(test_job_id)["test_status"] status = test_status["status"] if ['passed', 'failed'].include?(status) return test_status else puts "polling... status: #{status}" end end end
post(url, data, capture_request=true)
click to toggle source
# File lib/scirocco/client.rb, line 144 def post(url, data, capture_request=true) if capture_request @last_request = { url: url, request: data } end begin result = RestClient::Request.execute(:method => :post, :url => url, :payload => data, :timeout => @request_timeout, :open_timeout => @open_timeout) @last_request[:response] = result if capture_request JSON.parse(result) rescue => err if err.response pp JSON.parse(err.response) raise err.message else raise err end end end
projects()
click to toggle source
# File lib/scirocco/client.rb, line 22 def projects url = build_url("projects") get(url) end
run_test(test_class_id, device_id)
click to toggle source
# File lib/scirocco/client.rb, line 46 def run_test(test_class_id, device_id) url = build_url("tests", "run") data = { :api_key => @api_key, :test_class_id => test_class_id, :device_id => device_id } post(url, data) end
tests(project_id)
click to toggle source
Test API
# File lib/scirocco/client.rb, line 41 def tests(project_id) url = build_url("tests") get(url, {:project_id => project_id}) end
upload_app(project_id, app_path)
click to toggle source
# File lib/scirocco/client.rb, line 106 def upload_app(project_id, app_path) url = build_url("apps", "upload") data = { :multipart => true, :api_key => @api_key, :project_id => project_id, :file => File.new(app_path) } post(url, data) end