google_safe_browsing 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,42 +44,62 @@ module GoogleSafeBrowsing
44
44
 
45
45
  splits = split_host_path(lookup_url)
46
46
 
47
- host_strings = [splits[:host]]
48
- host = TopLevelDomain.split_from_host(splits[:host]).last(5)
47
+ host_string = strip_username_password_and_port_from_host(splits[:host])
48
+
49
+ host_strings = [host_string]
50
+ host = TopLevelDomain.split_from_host(host_string).last(5)
49
51
  ( host.length - 1 ).times do
50
52
  host_strings << host.join('.')
51
53
  host.shift
52
54
  end
53
55
  host_strings.uniq!
54
56
 
55
- path_split = splits[:path].split('?')
57
+ path_strings = generate_path_strings(splits[:path])
58
+
59
+ cart_prod(host_strings, path_strings)
60
+ end
61
+
62
+ private
63
+
64
+ def self.generate_path_strings(raw_path)
65
+ return [ '/' ] if raw_path == ''
66
+
67
+ path_split = raw_path.split('?')
56
68
  path = path_split[0]
57
69
  params = path_split[1]
58
70
 
59
71
 
60
- path_strings = [ splits[:path], '/' ]
61
- if path
62
- path_strings << path
63
- paths_to_append = path.split('/').first(3)
64
- paths_to_append.length.times do
65
- path_strings << paths_to_append.join('/')
66
- paths_to_append.pop
72
+ path_components = path.split('/').first(3)
73
+ path_strings = [ '/' ]
74
+ path_components.length.times do
75
+ path_strings << '/' + path_components.join('/')
76
+ path_components.pop
77
+ end
78
+
79
+ path_strings.map! do |p|
80
+ unless p.index('.')
81
+ p + '/'
82
+ else
83
+ p
67
84
  end
68
85
  end
69
- path_strings.map!{ |p| '/' + p + '/' }
70
- path_strings.map!{ |p| p.gsub!(/\/+/, '/') }
86
+ path_strings.map!{ |p| p.to_s.gsub!(/\/+/, '/') }
71
87
  path_strings.compact!
72
88
  path_strings.uniq!
73
89
 
74
- #puts host_strings.length
75
- #puts path_strings.length
76
-
77
-
78
- ( cart_prod(host_strings, path_strings) + host_strings ).uniq
90
+ if params
91
+ path_strings | path_strings.map do |p|
92
+ if p[-1..-1] == '/'
93
+ p
94
+ else
95
+ "#{p}?#{params}"
96
+ end
97
+ end
98
+ else
99
+ return path_strings
100
+ end
79
101
  end
80
102
 
81
- private
82
-
83
103
  def self.cart_prod(a_one, a_two)
84
104
  result = []
85
105
  a_one.each do |i|
@@ -177,5 +197,28 @@ module GoogleSafeBrowsing
177
197
  end
178
198
  cann
179
199
  end
200
+
201
+ def self.strip_username_password_and_port_from_host(host_string)
202
+ host_string = remove_port(host_string)
203
+ remove_username_and_password(host_string)
204
+ end
205
+
206
+ def self.remove_port(host_string)
207
+ port_sep = host_string.rindex(':')
208
+ if port_sep
209
+ host_string[0..port_sep-1]
210
+ else
211
+ host_string
212
+ end
213
+ end
214
+
215
+ def self.remove_username_and_password(host_string)
216
+ un_sep = host_string.index('@')
217
+ if un_sep
218
+ host_string[un_sep+1..-1]
219
+ else
220
+ host_string
221
+ end
222
+ end
180
223
  end
181
224
  end
@@ -1,3 +1,3 @@
1
1
  module GoogleSafeBrowsing
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_safe_browsing
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Chris Marshall
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-28 00:00:00 Z
18
+ date: 2012-03-02 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  prerelease: false