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 +4 -4
- data/lib/omni_browser.rb +91 -3
- data/lib/omni_browser/action_logging.rb +29 -0
- data/lib/omni_browser/action_logging/watir_mods.rb +33 -0
- data/lib/omni_browser/watir.rb +1 -1
- data/lib/omni_browser/website.rb +13 -0
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4518df2d382890b40632420199d86966dc32915
|
4
|
+
data.tar.gz: e03569216ce7c4fe9833d40e7e0d7d76c02842b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
data/lib/omni_browser/watir.rb
CHANGED
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.
|
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:
|
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: {}
|