Skip to content

Commit

Permalink
Lazy-load adapters using Ruby autoload feature.
Browse files Browse the repository at this point in the history
  • Loading branch information
weppos committed May 31, 2010
1 parent bf2627b commit 52f59ac
Show file tree
Hide file tree
Showing 12 changed files with 55 additions and 49 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

* FIXED: Unexpected token error when trying to parse a .hu whois response. The whois.nic.hu has changed response format.

* CHANGED: Lazy-load adapters using Ruby autoload feature.


== Release 1.1.8

Expand Down
32 changes: 18 additions & 14 deletions lib/whois/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,26 @@


require 'ipaddr'
require 'whois/server/adapters/base'
require 'whois/server/adapters/arpa'
require 'whois/server/adapters/afilias'
require 'whois/server/adapters/formatted'
require 'whois/server/adapters/none'
require 'whois/server/adapters/not_implemented'
require 'whois/server/adapters/pir'
require 'whois/server/adapters/standard'
require 'whois/server/adapters/verisign'
require 'whois/server/adapters/web'


module Whois

class Server


module Adapters
autoload :Base, "whois/server/adapters/base"
autoload :Arpa, "whois/server/adapters/arpa"
autoload :Afilias, "whois/server/adapters/afilias"
autoload :Formatted, "whois/server/adapters/formatted"
autoload :None, "whois/server/adapters/none"
autoload :NotImplemented, "whois/server/adapters/not_implemented"
autoload :Pir, "whois/server/adapters/pir"
autoload :Standard, "whois/server/adapters/standard"
autoload :Verisign, "whois/server/adapters/verisign"
autoload :Web, "whois/server/adapters/web"
end


@@definitions = {}

# Searches the /definitions folder for definition files and loads them.
Expand Down Expand Up @@ -141,7 +145,7 @@ def self.guess(qstring)
# Gave Over
raise ServerNotFound, "Unable to find a whois server for `#{qstring}'"
end


private

Expand Down Expand Up @@ -203,4 +207,4 @@ def self.valid_ipv6?(addr)

end

Whois::Server.load_definitions
Whois::Server.load_definitions
2 changes: 1 addition & 1 deletion lib/whois/server/adapters/afilias.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ def extract_referral(response)

end
end
end
end
12 changes: 6 additions & 6 deletions lib/whois/server/adapters/arpa.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@
module Whois
class Server
module Adapters

class Arpa < Base

def request(qstring)
Server.guess(inaddr_to_ip(qstring)).query(qstring)
end

protected

# "127.1.168.192.in-addr.arpa" => "192.168.1.127"
# "1.168.192.in-addr.arpa" => "192.168.1.0"
# "168.192.in-addr.arpa" => "192.168.0.0"
Expand All @@ -45,9 +45,9 @@ def inaddr_to_ip(string)
end
end.join(".")
end

end

end
end
end
end
2 changes: 1 addition & 1 deletion lib/whois/server/adapters/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def ask_the_socket(qstring, host, port)
ensure # and I really want to use read instead of gets.
client.close if client # If != client something went wrong.
end

end

end
Expand Down
8 changes: 4 additions & 4 deletions lib/whois/server/adapters/formatted.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@
module Whois
class Server
module Adapters

class Formatted < Base

def request(qstring)
options[:format] || raise(ServerError, "Missing mandatory :format option for adapter `Formatted'")
response = query_the_socket(sprintf(options[:format], qstring), host)
append_to_buffer response, host
end

end

end
end
end
end
11 changes: 5 additions & 6 deletions lib/whois/server/adapters/none.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,17 @@ module Adapters
# adapter raises a <tt>Whois::NoInterfaceError</tt> exception.
#
class None < Base

# Always raises a <tt>Whois::NoInterfaceError</tt> exception.
#
# ==== Raises
# NoInterfaceError:: for every request
#
# Returns nothing.
# Raises Whois::NoInterfaceError for every request.
def request(qstring)
raise NoInterfaceError, "This `#{type}' has no whois server"
end

end

end
end
end
end
10 changes: 6 additions & 4 deletions lib/whois/server/adapters/not_implemented.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,17 @@
module Whois
class Server
module Adapters

class NotImplemented < Base


# Returns nothing.
# Raises Whois::ServerNotImplemented for every request.
def request(qstring)
raise ServerNotImplemented, "The `#{host}' feature has not been implemented yet."
end

end

end
end
end
end
2 changes: 1 addition & 1 deletion lib/whois/server/adapters/pir.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@ def extract_referral(response)

end
end
end
end
4 changes: 2 additions & 2 deletions lib/whois/server/adapters/standard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ module Adapters
# This adapter also supports an optional port number.
#
class Standard < Base

def request(qstring)
response = query_the_socket(qstring, host)
append_to_buffer response, host
end

end

end
Expand Down
6 changes: 3 additions & 3 deletions lib/whois/server/adapters/verisign.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
module Whois
class Server
module Adapters

class Verisign < Base

def request(qstring)
response = ask_the_socket("=#{qstring}", host, DEFAULT_WHOIS_PORT)
append_to_buffer response, host
Expand All @@ -42,4 +42,4 @@ def extract_referral(response)

end
end
end
end
13 changes: 6 additions & 7 deletions lib/whois/server/adapters/web.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
module Whois
class Server
module Adapters

#
# = Web Adapter
#
Expand All @@ -28,19 +28,18 @@ module Adapters
# adapter a little more specific.
#
class Web < Base

# Always raises a <tt>Whois::WebInterfaceError</tt> exception
# including the web address for the WHOIS inteface.
#
# ==== Raises
# WebInterfaceError:: for every request
#
# Returns nothing.
# Raises Whois::WebInterfaceError for every request.
def request(qstring)
raise WebInterfaceError, options[:web]
end

end

end
end
end
end

0 comments on commit 52f59ac

Please sign in to comment.