omnibrowser 0.0.3 → 0.0.4

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
  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: {}