class Barge::Client
Public Class Methods
new(opts = {})
click to toggle source
# File lib/barge.rb, line 12 def initialize(opts = {}) @api_key = opts[:api_key] or raise ArgumentError, 'api_key is required' @endpoint = opts[:endpoint] || 'https://www.bargeapp.com/api' @ssl = opts.has_key?(:ssl) ? !!opts[:ssl] : true @verify_mode = opts[:verify_mode] || OpenSSL::SSL::VERIFY_PEER end
Public Instance Methods
create_webdriver_session(sync = true)
click to toggle source
# File lib/barge.rb, line 19 def create_webdriver_session(sync = true) puts "IN create_webdriver_session" session = execute :post, 'webdriver_sessions' if !sync return session end loops = 0 loop do session = describe_webdriver_sessions(session['id']) break unless session['status'] == 'pending' if ((loops += 1) > 10) raise WebdriverTimeout else sleep 3 end end Capybara.default_driver = :selenium Capybara::Selenium::Remote.use(session['ip'], url: "http://#{session['ip']}:#{session['port']}/", desired_capabilities: { browser: 'chrome'}) session end
create_webdriver_test(opts = {})
click to toggle source
# File lib/barge.rb, line 48 def create_webdriver_test(opts = {}) execute :post, "tests/create_webdriver", { webdriver_session_id: opts[:webdriver_session_id], users: opts[:users], minutes: opts[:minutes] } end
describe_tests(id = nil)
click to toggle source
# File lib/barge.rb, line 56 def describe_tests(id = nil) execute :get, "tests/#{id}" end
describe_webdriver_sessions(id = nil)
click to toggle source
# File lib/barge.rb, line 44 def describe_webdriver_sessions(id = nil) execute :get, "webdriver_sessions/#{id}" end
Private Instance Methods
execute(verb, path, params = {})
click to toggle source
# File lib/barge.rb, line 61 def execute(verb, path, params = {}) # Titleize verb name and initialize that class by name klass_name = verb.slice(0,1).capitalize + verb.slice(1..-1).downcase klass = Net::HTTP.const_get(klass_name) uri = URI("#{@endpoint}/#{path}") http = Net::HTTP.new(uri.host, uri.port) if @ssl http.use_ssl = true http.verify_mode = @verify_mode end req = klass.new(uri.request_uri, { 'Content-Type' =>'application/json', 'API-KEY' => @api_key }) if params.keys.count > 0 req.body = params.to_json end res = http.request(req) case res.code when '200', '201', '422' if res.body && res.body.length > 2 JSON.parse(res.body) else {} end when '401' # unauthorized raise UnauthorizedException when '404' # not found raise NotFoundException when '422' # bad params JSON.parse(res.body) else raise BargeException, "#{res.code}: #{res.body}" end end