superbot-teleport 0.2.8 → 0.2.9

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: 9b274c26142be5c2dc8b56512ce30742f6707868ef8a767b4fa2fa2dde664e6a
4
- data.tar.gz: 4aae54f1e4ca46467c11c0427730ef588a6a4a44286941ceda53afecee3d0749
3
+ metadata.gz: 49234eaa577cc8d0b36d1170229022d765603222b842f9a5191192b32aa4d0af
4
+ data.tar.gz: 6f38f0ced550f0ebb8d400218c6687a94b8ae4e25b6511958b16e611927f5501
5
5
  SHA512:
6
- metadata.gz: 9f6b4ecf86782e3706254290d899f38f08dcea71f09081eae6781a1a96ce33979f546ad7d416f326bc622920e63b6cec300cc483a8439f5dd413a62bf1549183
7
- data.tar.gz: f6f03e163930c425ac56d25574d7d7c1aa634e4dbda493bf5ae3af95d3e40e6db9b59aaa12f89adffa4dc3841db5b651e556ea6a0a98bf8bedb9142277fe64fa
6
+ metadata.gz: f26e286bc638cd4a905caf05ea5950cdb4c078e0860937ea3610d1f346fad2184f3ac6ffe4cf6a7c81d93a59cd886f88bb3d3b98ae95cb221ced8e36eb1436aa
7
+ data.tar.gz: 3e578db0b76f1fe09f7c72236a2e7fc8ad66da483614dd5b6a57ec41adefd1d10abb41114e153f94f9699a5ced0ebab762449deec60d4baf3fb55b8b6935fbff
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superbot-teleport (0.2.8)
4
+ superbot-teleport (0.2.9)
5
5
  excon
6
6
 
7
7
  GEM
@@ -14,12 +14,14 @@ module Superbot
14
14
  end
15
15
 
16
16
  option ['--browser'], 'BROWSER', "Browser type to use. Can be either local or cloud", default: 'cloud'
17
- option ['--region'], 'REGION', 'Region for remote webdriver'
18
- option ['--org'], 'ORGANIZATION', 'Name of organization to take action', attribute_name: :organization
19
- option ['--reuse'], :flag, "Reuse existing session"
17
+ option ['--region'], 'REGION', "Region for remote webdriver"
18
+ option ['--org'], 'ORGANIZATION', "Name of organization to take action on", environment_variable: "SUPERBOT_ORG", attribute_name: :organization
19
+ option ['--ignore-delete'], :flag, "Reuse existing session"
20
+ option ['--keep-session'], :flag, "Keep session when teleport closing"
21
+ option ['--session'], 'SESSION', "Session to use in teleport"
20
22
 
21
23
  def execute
22
- validate_teleport_options(browser, organization)
24
+ validate_teleport_options(browser, organization, session)
23
25
 
24
26
  run_local_chromedriver if browser == 'local'
25
27
 
@@ -31,7 +33,9 @@ module Superbot
31
33
  webdriver_type: browser,
32
34
  region: region,
33
35
  organization: organization,
34
- reuse: reuse?
36
+ ignore_delete: session || ignore_delete?,
37
+ keep_session: session || keep_session?,
38
+ session: session
35
39
  )
36
40
 
37
41
  at_exit do
@@ -5,16 +5,20 @@ module Superbot
5
5
  module Validations
6
6
  include Superbot::Cloud::Validations
7
7
 
8
- def validate_teleport_options(browser, organization)
8
+ def validate_teleport_options(browser, organization, session = nil)
9
9
  return if browser == 'local'
10
10
 
11
11
  unless %w[local cloud local_cloud].include?(browser)
12
12
  signal_usage_error "The --browser=#{browser} browser option is not allowed. Should be either 'local' or 'cloud'."
13
13
  end
14
14
 
15
- signal_usage_error '--org option is required for cloud teleport' unless organization
15
+ signal_usage_error '--org option is required for cloud teleport' unless organization || ENV['SUPERBOT_TOKEN']
16
16
 
17
17
  require_login
18
+
19
+ return unless session
20
+
21
+ Superbot::Cloud::Api.request(:get_webdriver_session, params: {session_id: session, organization_name: organization})
18
22
  end
19
23
  end
20
24
  end
@@ -1,5 +1,5 @@
1
1
  module Superbot
2
2
  module Teleport
3
- VERSION = "0.2.8"
3
+ VERSION = "0.2.9"
4
4
  end
5
5
  end
@@ -20,7 +20,6 @@ module Superbot
20
20
  read_timeout: 500,
21
21
  write_timeout: 500
22
22
  )
23
- sinatra.set :current_session, nil
24
23
 
25
24
  sinatra.helpers do
26
25
  def request_path(params)
@@ -56,18 +55,22 @@ module Superbot
56
55
  sinatra.post "/wd/hub/*" do
57
56
  case request_path(params)
58
57
  when "session"
59
- parsed_body = safe_parse_json request.body, on_error: {}
60
-
61
- parsed_body['organization_name'] = settings.teleport_options[:organization]
62
-
63
- if settings.teleport_options[:region] && parsed_body.dig('desiredCapabilities', 'superOptions', 'region').nil?
64
- parsed_body['desiredCapabilities'] ||= {}
65
- parsed_body['desiredCapabilities']['superOptions'] ||= {}
66
- parsed_body['desiredCapabilities']['superOptions']['region'] ||= settings.teleport_options[:region]
67
- end
68
-
69
- unless settings.teleport_options[:reuse] && settings.current_session
70
- settings.current_session = proxy(
58
+ if settings.teleport_options[:session]
59
+ status 200
60
+ headers 'Content-Type' => 'application/json'
61
+ return { 'sessionId': settings.teleport_options[:session] }.to_json
62
+ else
63
+ parsed_body = safe_parse_json request.body, on_error: {}
64
+
65
+ parsed_body['organization_name'] = settings.teleport_options[:organization]
66
+
67
+ if settings.teleport_options[:region] && parsed_body.dig('desiredCapabilities', 'superOptions', 'region').nil?
68
+ parsed_body['desiredCapabilities'] ||= {}
69
+ parsed_body['desiredCapabilities']['superOptions'] ||= {}
70
+ parsed_body['desiredCapabilities']['superOptions']['region'] ||= settings.teleport_options[:region]
71
+ end
72
+
73
+ session_response = proxy(
71
74
  :post,
72
75
  params,
73
76
  headers: headers,
@@ -75,20 +78,21 @@ module Superbot
75
78
  write_timeout: 500,
76
79
  read_timeout: 500
77
80
  )
78
- end
81
+ settings.teleport_options[:session] = JSON.parse(session_response.body)['sessionId']
79
82
 
80
- respond settings.current_session
83
+ respond session_response
84
+ end
81
85
  else
82
86
  respond proxy(:post, params, headers: headers, body: request.body)
83
87
  end
84
88
  end
85
89
 
86
90
  sinatra.delete "/wd/hub/*" do
87
- if settings.teleport_options[:reuse]
91
+ if settings.teleport_options[:ignore_delete]
88
92
  puts "Skipping DELETE, keep session open"
89
93
  halt 204
90
94
  else
91
- settings.current_session = nil
95
+ settings.teleport_options[:session] = nil
92
96
  respond proxy(:delete, params, headers: headers)
93
97
  end
94
98
  end
@@ -106,13 +110,12 @@ module Superbot
106
110
  end
107
111
 
108
112
  at_exit do
109
- return unless sinatra.settings.current_session
113
+ return if sinatra.teleport_options[:session] && sinatra.settings.teleport_options[:keep_session]
110
114
 
111
115
  puts nil, "Removing active session..."
112
- session_id = JSON.parse(sinatra.settings.current_session.body)['sessionId']
113
116
  sinatra.settings.connection.request(
114
117
  method: :delete,
115
- path: "wd/hub/session/#{session_id}",
118
+ path: "wd/hub/session/#{sinatra.teleport_options[:session]}",
116
119
  headers: { 'Content-Type' => 'application/json' }
117
120
  )
118
121
  rescue => e
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.8
4
+ version: 0.2.9
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-02-01 00:00:00.000000000 Z
11
+ date: 2019-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon