Class: Isomorfeus::Puppetmaster::Session
- Inherits:
-
Object
- Object
- Isomorfeus::Puppetmaster::Session
- Defined in:
- lib/isomorfeus/puppetmaster/session.rb
Constant Summary collapse
- TIMEOUT =
milliseconds
30000
Instance Attribute Summary collapse
-
#app ⇒ Object
Returns the value of attribute app.
-
#browser ⇒ Object
Returns the value of attribute browser.
-
#default_page ⇒ Object
Returns the value of attribute default_page.
-
#devtools ⇒ Object
readonly
Returns the value of attribute devtools.
-
#headless ⇒ Object
readonly
Returns the value of attribute headless.
-
#product ⇒ Object
Returns the value of attribute product.
-
#response ⇒ Object
Returns the value of attribute response.
Instance Method Summary collapse
- #close ⇒ Object
- #device_names ⇒ Object
- #devices ⇒ Object
- #eval(j, *args) ⇒ Object
- #eval_ruby(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
- #eval_with_opal(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
- #evaluate(script, *args) ⇒ Object
-
#initialize(app:, args: nil, channel: nil, default_viewport: nil, devtools: nil, dumpio: nil, env: nil, executable_path: nil, handle_SIGINT: nil, handle_SIGTERM: nil, handle_SIGHUP: nil, headless: nil, ignore_default_args: nil, ignore_https_errors: nil, pipe: nil, product: :chrome, slow_mo: nil, timeout: nil, user_data_dir: nil) ⇒ Session
constructor
A new instance of Session.
- #isomorphic(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
- #isomorphic_with_opal(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
- #network_conditions ⇒ Object
- #network_conition_names ⇒ Object
- #new_page(uri = nil, referer: nil, timeout: nil, wait_until: nil) ⇒ Object
- #pages ⇒ Object
- #parse_uri(uri) ⇒ Object
- #user_agent ⇒ Object
- #visit(uri, referer: nil, timeout: nil, wait_until: 'networkidle0', headless: nil, devtools: nil) ⇒ Object (also: #goto)
Constructor Details
#initialize(app:, args: nil, channel: nil, default_viewport: nil, devtools: nil, dumpio: nil, env: nil, executable_path: nil, handle_SIGINT: nil, handle_SIGTERM: nil, handle_SIGHUP: nil, headless: nil, ignore_default_args: nil, ignore_https_errors: nil, pipe: nil, product: :chrome, slow_mo: nil, timeout: nil, user_data_dir: nil) ⇒ Session
Returns a new instance of Session.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 9 def initialize(app:, args: nil, channel: nil, default_viewport: nil, devtools: nil, dumpio: nil, env: nil, executable_path: nil, handle_SIGINT: nil, handle_SIGTERM: nil, handle_SIGHUP: nil, headless: nil, ignore_default_args: nil, ignore_https_errors: nil, pipe: nil, product: :chrome, slow_mo: nil, timeout: nil, user_data_dir: nil) @parameters = binding.local_variables.map { |v| [v, binding.local_variable_get(v)] }.to_h @parameters[:channel] = @parameters[:channel].to_s if channel @parameters[:timeout] = TIMEOUT unless timeout @app = @parameters.delete(:app) @headless = headless @headless = true if @headless.nil? @devtools = devtools @devtools = false if @devtools.nil? @channel = channel.to_s product = product.to_s @parameters[:product] = %w[chrome firefox].include?(product) ? product : 'chrome' @product = @parameters[:product] launch_browser ObjectSpace.define_finalizer(self, self.class.close_browser(self)) end |
Instance Attribute Details
#app ⇒ Object
Returns the value of attribute app.
6 7 8 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 6 def app @app end |
#browser ⇒ Object
Returns the value of attribute browser.
6 7 8 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 6 def browser @browser end |
#default_page ⇒ Object
Returns the value of attribute default_page.
6 7 8 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 6 def default_page @default_page end |
#devtools ⇒ Object (readonly)
Returns the value of attribute devtools.
7 8 9 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 7 def devtools @devtools end |
#headless ⇒ Object (readonly)
Returns the value of attribute headless.
7 8 9 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 7 def headless @headless end |
#product ⇒ Object
Returns the value of attribute product.
6 7 8 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 6 def product @product end |
#response ⇒ Object
Returns the value of attribute response.
6 7 8 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 6 def response @response end |
Instance Method Details
#close ⇒ Object
30 31 32 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 30 def close @browser.close end |
#device_names ⇒ Object
38 39 40 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 38 def device_names devices.keys end |
#devices ⇒ Object
34 35 36 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 34 def devices ::Puppeteer::DEVICES end |
#eval(j, *args) ⇒ Object
99 100 101 102 103 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 99 def eval(j, *args) r = @default_page.evaluate_handle("function() { return #{j} }", *args) return r if r.is_a?(Puppeteer::ElementHandle) r&.json_value end |
#eval_ruby(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
105 106 107 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 105 def eval_ruby(ruby_source = '', file = nil, line = nil, &block) @default_page.eval_ruby(ruby_source, file, line, &block) end |
#eval_with_opal(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
109 110 111 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 109 def eval_with_opal(ruby_source = '', file = nil, line = nil, &block) @default_page.eval_with_opal(ruby_source, file, line, &block) end |
#evaluate(script, *args) ⇒ Object
94 95 96 97 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 94 def evaluate(script, *args) script = script.strip @default_page.evaluate_handle(script, *args) end |
#isomorphic(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
113 114 115 116 117 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 113 def isomorphic(ruby_source = '', file = nil, line = nil, &block) ruby_source, file, line = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given? Isomorfeus::Puppetmaster.served_app.on_server(ruby_source, file, line) eval_ruby(ruby_source, file, line) end |
#isomorphic_with_opal(ruby_source = '', file = nil, line = nil, &block) ⇒ Object
119 120 121 122 123 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 119 def isomorphic_with_opal(ruby_source = '', file = nil, line = nil, &block) ruby_source, file, line = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given? Isomorfeus::Puppetmaster.served_app.on_server(ruby_source, file, line) eval_with_opal(ruby_source, file, line) end |
#network_conditions ⇒ Object
61 62 63 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 61 def network_conditions ::Puppeteer::NETWORK_CONDITIONS end |
#network_conition_names ⇒ Object
65 66 67 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 65 def network_conition_names network_conditions.map { |n| n[:name] } end |
#new_page(uri = nil, referer: nil, timeout: nil, wait_until: nil) ⇒ Object
69 70 71 72 73 74 75 76 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 69 def new_page(uri = nil, referer: nil, timeout: nil, wait_until: nil) new_page = @browser.new_page if uri parsed_uri = parse_uri(uri) new_page.goto(parsed_uri.to_s, referer: referer, timeout: timeout, wait_until: wait_until) end new_page end |
#pages ⇒ Object
42 43 44 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 42 def pages @browser.pages end |
#parse_uri(uri) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 78 def parse_uri(uri) return nil if uri.nil? return uri if uri == 'about:blank' parsed_uri = URI.parse(uri) if parsed_uri.host.nil? && parsed_uri.port.nil? && parsed_uri.scheme.nil? parsed_uri.host = self.app.host parsed_uri.port = self.app.port parsed_uri.scheme = self.app.scheme end parsed_uri end |
#user_agent ⇒ Object
90 91 92 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 90 def user_agent @browser.user_agent end |
#visit(uri, referer: nil, timeout: nil, wait_until: 'networkidle0', headless: nil, devtools: nil) ⇒ Object Also known as: goto
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/isomorfeus/puppetmaster/session.rb', line 46 def visit(uri, referer: nil, timeout: nil, wait_until: 'networkidle0', headless: nil, devtools: nil) headless = @headless if headless.nil? devtools = @devtools if devtools.nil? if @headless != headless || @devtools != devtools @browser.close @headless = headless @devtools = devtools launch_browser end parsed_uri = parse_uri(uri) @response = @default_page.goto(parsed_uri.to_s, referer: referer, timeout: timeout, wait_until: wait_until) @default_page end |