superbot-teleport 0.2.7 → 0.2.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 428aebb42ee7827783d9af49474d5e48f7303eaaff8a9612d9e37b033baf9de3
4
- data.tar.gz: 6163a6bb059033dbedb3c82553fea9e4f67daea2ad18385b4ffa3e50211f3475
3
+ metadata.gz: 9b274c26142be5c2dc8b56512ce30742f6707868ef8a767b4fa2fa2dde664e6a
4
+ data.tar.gz: 4aae54f1e4ca46467c11c0427730ef588a6a4a44286941ceda53afecee3d0749
5
5
  SHA512:
6
- metadata.gz: 4f3f9cfe22bac517f19cb42b1d931325338c9f2f0a6b87c1a3b88dd5806d254a73fffc2c6b1509791323a618af34ce546b46f464cc8bd55b72560dfd19a0f445
7
- data.tar.gz: cb266fdb6b96987283270b122da3187f9b3a7ea60afe72f1f47b95faf171247593edd4753b73e99af01cff7435c9574a32d1b2b71d280d45c217c0576a246803
6
+ metadata.gz: 9f6b4ecf86782e3706254290d899f38f08dcea71f09081eae6781a1a96ce33979f546ad7d416f326bc622920e63b6cec300cc483a8439f5dd413a62bf1549183
7
+ data.tar.gz: f6f03e163930c425ac56d25574d7d7c1aa634e4dbda493bf5ae3af95d3e40e6db9b59aaa12f89adffa4dc3841db5b651e556ea6a0a98bf8bedb9142277fe64fa
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superbot-teleport (0.2.7)
4
+ superbot-teleport (0.2.8)
5
5
  excon
6
6
 
7
7
  GEM
@@ -16,6 +16,7 @@ module Superbot
16
16
  option ['--browser'], 'BROWSER', "Browser type to use. Can be either local or cloud", default: 'cloud'
17
17
  option ['--region'], 'REGION', 'Region for remote webdriver'
18
18
  option ['--org'], 'ORGANIZATION', 'Name of organization to take action', attribute_name: :organization
19
+ option ['--reuse'], :flag, "Reuse existing session"
19
20
 
20
21
  def execute
21
22
  validate_teleport_options(browser, organization)
@@ -26,19 +27,25 @@ module Superbot
26
27
  puts 'Configure your remote webdriver to http://localhost:4567/wd/hub', ''
27
28
  puts 'Press [control+c] to exit', ''
28
29
 
29
- @web = Superbot::Web.run!(webdriver_type: browser, region: region, organization: organization)
30
- ensure
31
- close_teleport
32
- end
30
+ @web = Superbot::Web.run!(
31
+ webdriver_type: browser,
32
+ region: region,
33
+ organization: organization,
34
+ reuse: reuse?
35
+ )
33
36
 
34
- def close_teleport
35
- @web&.quit!
36
- @chromedriver&.kill
37
+ at_exit do
38
+ @web&.quit!
39
+ end
37
40
  end
38
41
 
39
42
  def run_local_chromedriver
40
43
  chromedriver_path = Chromedriver::Helper.new.binary_path
41
44
  @chromedriver = Kommando.run_async "#{chromedriver_path} --silent --port=9515 --url-base=wd/hub"
45
+
46
+ at_exit do
47
+ @chromedriver&.kill
48
+ end
42
49
  end
43
50
  end
44
51
  end
@@ -1,5 +1,5 @@
1
1
  module Superbot
2
2
  module Teleport
3
- VERSION = "0.2.7"
3
+ VERSION = "0.2.8"
4
4
  end
5
5
  end
@@ -11,16 +11,16 @@ module Superbot
11
11
 
12
12
  user_auth_creds = Superbot::Cloud.credentials&.slice(:username, :token) || {}
13
13
 
14
- sinatra.set :connection, (
15
- Excon.new sinatra.webdriver_url, {
16
- user: user_auth_creds[:username],
17
- password: user_auth_creds[:token],
18
- persistent: true,
19
- connect_timeout: 3,
20
- read_timeout: 5,
21
- write_timeout: 5,
22
- }
14
+ sinatra.set :connection, Excon.new(
15
+ sinatra.webdriver_url,
16
+ user: user_auth_creds[:username],
17
+ password: user_auth_creds[:token],
18
+ persistent: true,
19
+ connect_timeout: 3,
20
+ read_timeout: 500,
21
+ write_timeout: 500
23
22
  )
23
+ sinatra.set :current_session, nil
24
24
 
25
25
  sinatra.helpers do
26
26
  def request_path(params)
@@ -39,18 +39,18 @@ module Superbot
39
39
  path = "wd/hub/#{request_path(params)}"
40
40
  headers["Content-Type"] = "application/json"
41
41
 
42
- settings.connection.request({method: method, path: path}.merge(opts))
42
+ settings.connection.request({ method: method, path: path }.merge(opts))
43
43
  end
44
44
 
45
45
  def respond(upstream)
46
- headers = upstream.headers
46
+ headers upstream.headers
47
47
  status upstream.status
48
48
  upstream.body
49
49
  end
50
50
  end
51
51
 
52
52
  sinatra.get "/wd/hub/*" do
53
- respond proxy(:get, params, {headers: headers, body: request.body})
53
+ respond proxy(:get, params, headers: headers, body: request.body)
54
54
  end
55
55
 
56
56
  sinatra.post "/wd/hub/*" do
@@ -58,22 +58,39 @@ module Superbot
58
58
  when "session"
59
59
  parsed_body = safe_parse_json request.body, on_error: {}
60
60
 
61
- parsed_body['organization_name'] = settings.organization
61
+ parsed_body['organization_name'] = settings.teleport_options[:organization]
62
62
 
63
- if settings.region && parsed_body.dig('desiredCapabilities', 'superOptions', 'region').nil?
63
+ if settings.teleport_options[:region] && parsed_body.dig('desiredCapabilities', 'superOptions', 'region').nil?
64
64
  parsed_body['desiredCapabilities'] ||= {}
65
65
  parsed_body['desiredCapabilities']['superOptions'] ||= {}
66
- parsed_body['desiredCapabilities']['superOptions']['region'] ||= settings.region
66
+ parsed_body['desiredCapabilities']['superOptions']['region'] ||= settings.teleport_options[:region]
67
67
  end
68
68
 
69
- respond proxy(:post, params, {headers: headers, body: parsed_body.to_json, read_timeout: 500})
69
+ unless settings.teleport_options[:reuse] && settings.current_session
70
+ settings.current_session = proxy(
71
+ :post,
72
+ params,
73
+ headers: headers,
74
+ body: parsed_body.to_json,
75
+ write_timeout: 500,
76
+ read_timeout: 500
77
+ )
78
+ end
79
+
80
+ respond settings.current_session
70
81
  else
71
- respond proxy(:post, params, {headers: headers, body: request.body})
82
+ respond proxy(:post, params, headers: headers, body: request.body)
72
83
  end
73
84
  end
74
85
 
75
86
  sinatra.delete "/wd/hub/*" do
76
- respond proxy(:delete, params, {headers: headers})
87
+ if settings.teleport_options[:reuse]
88
+ puts "Skipping DELETE, keep session open"
89
+ halt 204
90
+ else
91
+ settings.current_session = nil
92
+ respond proxy(:delete, params, headers: headers)
93
+ end
77
94
  end
78
95
 
79
96
  sinatra.error Excon::Error::Socket do
@@ -87,6 +104,20 @@ module Superbot
87
104
  raise "unknown: #{$!.message}"
88
105
  end
89
106
  end
107
+
108
+ at_exit do
109
+ return unless sinatra.settings.current_session
110
+
111
+ puts nil, "Removing active session..."
112
+ session_id = JSON.parse(sinatra.settings.current_session.body)['sessionId']
113
+ sinatra.settings.connection.request(
114
+ method: :delete,
115
+ path: "wd/hub/session/#{session_id}",
116
+ headers: { 'Content-Type' => 'application/json' }
117
+ )
118
+ rescue => e
119
+ puts e.message
120
+ end
90
121
  end
91
122
  end
92
123
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superbot-teleport
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Superbot HQ
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-14 00:00:00.000000000 Z
11
+ date: 2019-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon