superbot-teleport 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
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