bstack_wrapper 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/bstack_wrapper.rb +4 -0
  2. data/lib/user_account.rb +87 -0
  3. metadata +84 -0
@@ -0,0 +1,4 @@
1
+ require "net/http"
2
+ require "uri"
3
+ require "json"
4
+ require "user_account.rb"
@@ -0,0 +1,87 @@
1
+ class UserAccount
2
+ attr_accessor :username, :access_key
3
+
4
+ def initialize username, access_key
5
+ if validate_params username, access_key
6
+ @username = username
7
+ @access_key = access_key
8
+ else
9
+ raise Exception, "Invalid username/accesskey"
10
+ end
11
+ end
12
+
13
+
14
+ def get_browsers options
15
+ uri = "http://api.browserstack.com/3/browsers?"
16
+ uri = uri + "flat=true" if options[:flat]
17
+ uri = uri + "all=true" if options[:all]
18
+ response = get_from_browser_stack uri
19
+ return JSON.parse(response.body)
20
+ end
21
+
22
+ def create_worker options
23
+ require_params = %w(os os_version browser device browser_version timeout url name)
24
+ optional_params = %w(build project)
25
+ options.reject! { |o| !require_params.include?(o) && !optional_params.include?(o) }
26
+ require_params.each { |param| raise Exception, "Parameter #{param} is required." if !options.include?(param) }
27
+ uri = "http://api.browserstack.com/3/worker"
28
+ response= post_at_browser_stack(uri, options)
29
+ return JSON.parse(response.body)
30
+ end
31
+
32
+ def get_worker_screen_shot options
33
+ require_params =%w(format worker_id)
34
+ optional_params = %w()
35
+ options.reject! { |o| !require_params.include?(o) && !optional_params.include?(o) }
36
+ require_params.each { |param| raise Exception, "Parameter #{param} is required." if !options.include?(param) }
37
+ uri = "http://api.browserstack.com/3/worker/#{options["worker_id"]}/screenshot.#{options["format"]}"
38
+ response = get_from_browser_stack uri
39
+ return JSON.parse(response.body)
40
+ end
41
+
42
+
43
+ def get_worker_status options
44
+ required_params = %w(worker_id)
45
+ options_params = []
46
+ options.reject! { |o| !require_params.include?(o) && !optional_params.include?(o) }
47
+ require_params.each { |param| raise Exception, "Parameter #{param} is required." if !options.include?(param) }
48
+ uri = "http://api.browserstack.com/3/worker#{options["worker_id"]}"
49
+ response = get_from_browser_stack uri
50
+ return JSON.parse(response.body)
51
+ end
52
+
53
+
54
+ private
55
+ def post_at_browser_stack uri, options
56
+ # puts options
57
+ # options = {"timeout"=>300, "name"=>"ship", "url"=>"shipdroid.com", "os"=>"OS X", "device"=>nil, "browser"=>"safari", "browser_version"=>"7.0", "os_version"=>"Mavericks"}
58
+ # uri = "http://api.browserstack.com/3/worker"
59
+ uri = URI.parse(uri)
60
+ http = Net::HTTP.new(uri.host, uri.port)
61
+ request = Net::HTTP::Post.new(uri.request_uri)
62
+ request.basic_auth(self.username, self.access_key)
63
+ request.set_form_data(options)
64
+ response = http.request(request)
65
+ return response
66
+ end
67
+
68
+ def get_from_browser_stack uri
69
+ uri = URI.parse(uri)
70
+ http = Net::HTTP.new(uri.host, uri.port)
71
+ request = Net::HTTP::Get.new(uri.request_uri)
72
+ request.basic_auth(self.username, self.access_key)
73
+ response = http.request(request)
74
+ return response
75
+ end
76
+
77
+ def validate_params username, access_key
78
+ uri = "http://api.browserstack.com/3"
79
+ uri = URI.parse(uri)
80
+ http = Net::HTTP.new(uri.host, uri.port)
81
+ request = Net::HTTP::Get.new(uri.request_uri)
82
+ request.basic_auth(username, access_key)
83
+ response = http.request(request)
84
+ return (response.code != '200') ? false : true
85
+ end
86
+ end
87
+
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bstack_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 0
10
+ version: 0.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Mandy
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2014-08-14 00:00:00 +05:30
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name:
23
+ - json
24
+ - open-uri
25
+ - net-http
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 3
33
+ segments:
34
+ - 0
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ description: Browser stack wrapper!
39
+ email:
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - lib/bstack_wrapper.rb
48
+ - lib/user_account.rb
49
+ has_rdoc: true
50
+ homepage:
51
+ licenses: []
52
+
53
+ post_install_message:
54
+ rdoc_options: []
55
+
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
66
+ version: "0"
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ requirements: []
77
+
78
+ rubyforge_project:
79
+ rubygems_version: 1.3.7
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Browser stack wrapper!
83
+ test_files: []
84
+