omnibrowser 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 85d0aeebc80e813b871dcd75a81363a978a714f8
4
- data.tar.gz: 49708d69d77e0143fcdf50282bd91eb101bbaa1d
3
+ metadata.gz: b4518df2d382890b40632420199d86966dc32915
4
+ data.tar.gz: e03569216ce7c4fe9833d40e7e0d7d76c02842b7
5
5
  SHA512:
6
- metadata.gz: dff67453c2dfeaba79ed6e4294bc5126d0bea01d1df15cf45cbc09246fabe6fb15f70857a8d074db2ce661ad24fe5702ca5e28c4d4b6629ce9d22062e4d71c06
7
- data.tar.gz: a086f0898cd8e669c9206d1fe6c5c5d38fd1dd374ccb6e296e5709998f7051a17210c581807a08c6dfc1f63e0939b008e41d5b7fc0bac2f6acaf8b82cf32a349
6
+ metadata.gz: 44c516749a4380ecc7affd9d25ded77cd18524ca29fa72a0c7cdc1b709a3e201bf3894179d211a556c64886d23f8e5f0261e83e264e8ed5222f787a33883e350
7
+ data.tar.gz: 48b60d2ab9c869a1f651353dd86091d0ee8498890d91fe14ab598b48f58de99198607527aa80768f06da272a111551255bb795ee8582178ed03a25a6077cc40e
data/lib/omni_browser.rb CHANGED
@@ -1,4 +1,9 @@
1
+ require 'flex_console/dummy'
2
+ require 'flex_config'
3
+ require 'flex_pg'
4
+ require 'omni_browser/action_logging'
1
5
  require 'omni_browser/watir'
6
+ require 'omni_browser/website'
2
7
  require 'watir-webdriver'
3
8
  require 'watir-webdriver/extensions/alerts'
4
9
 
@@ -8,9 +13,39 @@ class OmniBrowser
8
13
 
9
14
  CHROME = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
10
15
 
16
+ attr_reader :database, :my_ip, :config, :logging_db, :domains_db, :ip_db
17
+ attr_accessor :tunnel, :allowance
18
+
11
19
  def initialize (*config)
12
- profile = Selenium::WebDriver::Firefox::Profile.new
13
20
 
21
+ h_args = config.last
22
+
23
+ @config = FlexConfig.new('/Users/YCL/Documents/RubyProjects/gems/omni_browser', {})
24
+ @database =
25
+ if config.include?(:no_database)
26
+ Dummy.new('database')
27
+ else
28
+ db_name = h_args[:db]
29
+ details = @config.to_h[:databases][db_name]
30
+ details.store(:database, db_name)
31
+ details
32
+ FlexPG.new(details)
33
+ end
34
+
35
+ @logging_db = database[@config.to_h[:tbl_names][:logging]]
36
+ @domains_db = database[@config.to_h[:tbl_names][:domains]]
37
+ @ip_db = database[@config.to_h[:tbl_names][:ip]]
38
+
39
+ @tunnel = nil
40
+ @my_ip = nil
41
+
42
+ unless config.include?(:no_report)
43
+ ClickReport.link_browser(self)
44
+ Watir::Element.include(ClickReport)
45
+ require 'omni_browser/action_logging/watir_mods'
46
+ end
47
+
48
+ profile = Selenium::WebDriver::Firefox::Profile.new
14
49
  profile['javascript.enabled'] = false if config.include?(:no_java)
15
50
  profile['general.useragent.override'] =
16
51
  case
@@ -21,6 +56,8 @@ class OmniBrowser
21
56
  end
22
57
 
23
58
  @browser = Watir::Browser.new(:firefox, profile: profile)
59
+ @last_domain = ''
60
+ @dom_id = nil
24
61
  end
25
62
 
26
63
  def resize (width, height = nil)
@@ -47,11 +84,62 @@ class OmniBrowser
47
84
  end
48
85
 
49
86
  def method_missing (method, *args)
50
- @browser.send(method, *args)
87
+ if [:goto, :refresh, :back].include?(method)
88
+ save_domain
89
+ browsed = true
90
+ else
91
+ browsed = false
92
+ end
93
+
94
+ begin
95
+ result = @browser.send(method, *args)
96
+ rescue Timeout::Error => e
97
+ puts 'page timed out'
98
+ @browser.stop
99
+ @browser.refresh
100
+ end
101
+ sleep(0.88)
102
+ if browsed
103
+ domain_check
104
+ add_request
105
+ end
106
+ result
107
+ end
108
+
109
+ def save_domain
110
+ if @last_domain == ''
111
+ @my_ip = get_my_ip
112
+ puts 'Browser disconnecting database...'
113
+ database.disconnect
114
+ puts 'Sleep(3)'
115
+ sleep(3)
116
+ puts "Database connection ok? #{database.test_connection}"
117
+ end
118
+ @last_domain = domain
119
+ end
120
+
121
+ def domain_check
122
+ dom = domain
123
+ if @last_domain != dom || @last_domain == ''
124
+ @dom_id = domains_db[:domain_url => dom][:id]
125
+ else
126
+ @dom_id
127
+ end
128
+ end
129
+
130
+ def add_request
131
+ details = {:ip_address => @my_ip, :domain => @dom_id, :raw_url => @browser.url, :time => Time.now}
132
+ logging_db.insert(details)
133
+ puts '.'
134
+ unless tunnel.nil?
135
+ @allowance -= 1
136
+ @allowance = tunnel.reallocate if @allowance == 0
137
+ @my_ip = get_my_ip
138
+ end
51
139
  end
52
140
 
53
141
  def domain
54
- @browser.url.scan(/[^\/]+/)[1]
142
+ @browser.url.scan(/[^\/]+/)[1].strip
55
143
  end
56
144
 
57
145
  def save_html (path)
@@ -0,0 +1,29 @@
1
+ require 'flex_config'
2
+ require 'flex_pg'
3
+ require 'open-uri'
4
+
5
+ class OmniBrowser
6
+
7
+ def get_my_ip
8
+ puts 'Getting IP'
9
+ puts ip = open('http://icanhazip.com').read.strip
10
+ ip
11
+ end
12
+
13
+ end
14
+
15
+ module ClickReport
16
+
17
+ class << self
18
+ attr_reader :browser
19
+ def link_browser (browser_obj)
20
+ @browser = browser_obj
21
+ end
22
+
23
+ end
24
+
25
+ def browser_obj
26
+ ClickReport.browser
27
+ end
28
+
29
+ end
@@ -0,0 +1,33 @@
1
+ module Watir
2
+
3
+ class << self
4
+ attr_accessor :browser_obj
5
+ end
6
+
7
+
8
+ class Element
9
+
10
+ old_click_method = instance_method(:click)
11
+
12
+ define_method(:click) { |*args|
13
+ if self.is_a?(Watir::Option) || args.include?(:no_log)
14
+ finish = ->() {}
15
+ else
16
+ browser_obj.save_domain
17
+ finish = ->() {
18
+ browser_obj.domain_check
19
+ browser_obj.add_request
20
+ }
21
+ end
22
+ begin
23
+ results = old_click_method.bind(self).()
24
+ finish.call
25
+ rescue Timeout::Error => e
26
+ puts 'page timed out'
27
+ results = browser_obj.refresh
28
+ end
29
+ results
30
+ }
31
+ end
32
+
33
+ end
@@ -9,7 +9,7 @@ module Watir
9
9
  tally = {}
10
10
 
11
11
  print_line = ->(element) {
12
- tally.find_add(element.tag_name)
12
+ tally.find_add!(element.tag_name)
13
13
  puts "<#{element.tag_name}> #{tally[element.tag_name] - 1} | #{element.text.inspect} | #{element.elements.size}"
14
14
  }
15
15
 
@@ -0,0 +1,13 @@
1
+ class Website
2
+ attr_reader :browser, :database
3
+
4
+ def initialize (browser_obj, database)
5
+ @browser = browser_obj
6
+ @database = database
7
+ end
8
+
9
+ def method_missing (method, *args)
10
+ browser.send(method, *args)
11
+ end
12
+
13
+ end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omnibrowser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2016-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: flex_pg
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: flex_config
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: watir-webdriver
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -31,7 +59,10 @@ extensions: []
31
59
  extra_rdoc_files: []
32
60
  files:
33
61
  - lib/omni_browser.rb
62
+ - lib/omni_browser/action_logging.rb
63
+ - lib/omni_browser/action_logging/watir_mods.rb
34
64
  - lib/omni_browser/watir.rb
65
+ - lib/omni_browser/website.rb
35
66
  homepage:
36
67
  licenses: []
37
68
  metadata: {}