class PublicIp::Service::Simple

Attributes

headers[R]
uri[R]

Public Class Methods

headers() click to toggle source
# File lib/public_ip/service/simple.rb, line 30
def self.headers
  {}
end
ip() click to toggle source
# File lib/public_ip/service/simple.rb, line 14
def self.ip
  response = perform_request

  ip_address = extract_ip(response)

  unless IPAddress.valid?(ip_address)
    raise PublicIp::Service::InvalidIpAddress, "#{ip_address} is not a valid ip address"
  end

  ip_address
end
perform_request() click to toggle source
# File lib/public_ip/service/simple.rb, line 45
def self.perform_request
  Timeout.timeout(PublicIp::TIMEOUT_IN_SECS, PublicIp::Service::TimedOut) do
    request = Net::HTTP::Get.new(uri, headers)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = (uri.scheme == 'https')
    http.request(request)
  end
end
symbol() click to toggle source

Perform a demodulize and underscore (as in Rails)

# File lib/public_ip/service/simple.rb, line 35
def self.symbol
  symbol = name.match(/(?:.*)::(.*)$/)[1]
  symbol.gsub!(/::/, '/')
  symbol.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
  symbol.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  symbol.tr!('-', '_')
  symbol.downcase!
  symbol.to_sym
end
uri() click to toggle source
# File lib/public_ip/service/simple.rb, line 26
def self.uri
  raise 'Not implemented'
end