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