class Girbot::StepFoundation
Attributes
browser_holder[RW]
Public Class Methods
new(browser_holder)
click to toggle source
# File lib/girbot/step_foundation.rb, line 5 def initialize browser_holder @browser_holder = browser_holder end
read(path)
click to toggle source
# File lib/girbot/step_foundation.rb, line 73 def self.read(path) JSON.parse(File.read(path), symbolize_names: true) end
run(options={})
click to toggle source
# File lib/girbot/step_foundation.rb, line 77 def self.run(options={}) options[:browser] = BrowserHolder.new if options[:browser].nil? options[:headless] = true if options[:headless].nil? options[:openBrowser] = true if options[:openBrowser].nil? options[:closeBrowser] = true if options[:closeBrowser].nil? options[:maximize] = false if options[:maximize].nil? step = self.new(options[:browser]) if options[:headless] Headless.ly do step.take_whole_action(options, options[:openBrowser], options[:closeBrowser]) end else step.take_whole_action(options, options[:openBrowser], options[:closeBrowser]) end end
Public Instance Methods
take_whole_action(options, openBrowser, closeBrowser)
click to toggle source
# File lib/girbot/step_foundation.rb, line 9 def take_whole_action options, openBrowser, closeBrowser @browser_holder.init if openBrowser maximize if options[:maximize] validate_browser_presence action(options) close if closeBrowser end
validate_auth(options)
click to toggle source
# File lib/girbot/step_foundation.rb, line 49 def validate_auth(options) raise 'invalid options[:details]' unless options[:details].is_a?(Hash) raise 'invalid options[:details][:auth]' unless options[:details][:auth].is_a?(Hash) raise 'invalid options[:details][:auth][:user]' unless options[:details][:auth][:user].is_a?(String) raise 'invalid options[:details][:auth][:pass]' unless options[:details][:auth][:pass].is_a?(String) options[:details][:auth] end
validate_browser_presence()
click to toggle source
# File lib/girbot/step_foundation.rb, line 17 def validate_browser_presence throw 'browser not set' if browser.nil? end
validate_card(options)
click to toggle source
# File lib/girbot/step_foundation.rb, line 57 def validate_card(options) raise 'invalid options[:details]' unless options[:details].is_a?(Hash) raise 'invalid options[:details][:card]' unless options[:details][:card].is_a?(Hash) raise 'invalid options[:details][:card][:number]' unless options[:details][:card][:number].is_a?(String) raise 'invalid options[:details][:card][:name]' unless options[:details][:card][:name].is_a?(String) raise 'invalid options[:details][:card][:expYear]' unless options[:details][:card][:expYear].is_a?(String) raise 'invalid options[:details][:card][:expMonth]' unless options[:details][:card][:expMonth].is_a?(String) raise 'invalid options[:details][:card][:ccv]' unless options[:details][:card][:ccv].is_a?(String) # TODO: deeper validation # * number is only digits and correct length # * expYear is a year # * expMonth is a month # * ccv is only digits options[:details][:card] end
wait_for_sms()
click to toggle source
# File lib/girbot/step_foundation.rb, line 21 def wait_for_sms auth_code = nil server = TCPServer.new('0.0.0.0', 4125) puts 'Listenting on 0.0.0.0:4125' loop do socket = server.accept request = socket.gets response = "{}\n" socket.print "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: #{response.bytesize}\r\n" + "Connection: close\r\n" socket.print "\r\n" socket.print response socket.close if request.start_with?('GET /sms?authCode=') STDERR.puts request auth_code = request.split('=').last.split(' ').first break end end auth_code end