bstack_wrapper 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+