Class: HideMyAss::IP
- Inherits:
-
Object
- Object
- HideMyAss::IP
- Defined in:
- lib/hidemyass/ip.rb
Constant Summary collapse
- TAGS =
%w(span div text).freeze
Instance Attribute Summary collapse
-
#address ⇒ Object
Returns the value of attribute address.
-
#decoys ⇒ Object
Returns the value of attribute decoys.
Instance Method Summary collapse
-
#decode(elements) ⇒ Object
Receives an array of elements and returns another without invisibles.
-
#initialize(encoded_address) ⇒ IP
constructor
A new instance of IP.
- #inspect ⇒ Object
-
#valid? ⇒ Boolean
Make sure the IP has a valid format.
Constructor Details
#initialize(encoded_address) ⇒ IP
Returns a new instance of IP.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/hidemyass/ip.rb', line 11 def initialize(encoded_address) # Select decoy CSS classes: those which result in a hidden element @decoys = encoded_address.css("style").text.split("\n"). select {|style| style =~ /none/} # Find enclosing IP elements elements = encoded_address.children # Process elements and get rid of those with decoy classes elements = decode(elements) # Finally grab enclosing elements content, which is the real IP @address = elements.map(&:content).join self end |
Instance Attribute Details
#address ⇒ Object
Returns the value of attribute address.
8 9 10 |
# File 'lib/hidemyass/ip.rb', line 8 def address @address end |
#decoys ⇒ Object
Returns the value of attribute decoys.
8 9 10 |
# File 'lib/hidemyass/ip.rb', line 8 def decoys @decoys end |
Instance Method Details
#decode(elements) ⇒ Object
Receives an array of elements and returns another without invisibles.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/hidemyass/ip.rb', line 29 def decode(elements) elements.each do |element| # Remove elements with CSS style "none" if !TAGS.include?(element.name) || (element["style"] && element["style"] =~ /none/) element.children.remove # Get rid of decoy children elsif element["class"] decoys.each do |decoy| element.children.remove if decoy.include?(element["class"]) end end end elements end |
#inspect ⇒ Object
52 53 54 |
# File 'lib/hidemyass/ip.rb', line 52 def inspect "#<#{self.class}> @address=#{address}>" end |
#valid? ⇒ Boolean
Make sure the IP has a valid format.
48 49 50 |
# File 'lib/hidemyass/ip.rb', line 48 def valid? address.split(".").reject(&:empty?).size == 4 end |