diff options
Diffstat (limited to 'lib/nickserver/request_handlers')
-rw-r--r-- | lib/nickserver/request_handlers/base.rb | 18 | ||||
-rw-r--r-- | lib/nickserver/request_handlers/fingerprint_handler.rb | 25 | ||||
-rw-r--r-- | lib/nickserver/request_handlers/hkp_email_handler.rb | 12 | ||||
-rw-r--r-- | lib/nickserver/request_handlers/invalid_email_handler.rb | 12 | ||||
-rw-r--r-- | lib/nickserver/request_handlers/local_email_handler.rb | 20 |
5 files changed, 60 insertions, 27 deletions
diff --git a/lib/nickserver/request_handlers/base.rb b/lib/nickserver/request_handlers/base.rb new file mode 100644 index 0000000..e5d8992 --- /dev/null +++ b/lib/nickserver/request_handlers/base.rb @@ -0,0 +1,18 @@ +module Nickserver + module RequestHandlers + class Base + + def self.call(request) + new(request).handle + end + + def initialize(request) + @request = request + end + + protected + attr_reader :request + end + end +end + diff --git a/lib/nickserver/request_handlers/fingerprint_handler.rb b/lib/nickserver/request_handlers/fingerprint_handler.rb index 3c04fcd..5b2dc7d 100644 --- a/lib/nickserver/request_handlers/fingerprint_handler.rb +++ b/lib/nickserver/request_handlers/fingerprint_handler.rb @@ -1,27 +1,30 @@ +require 'nickserver/request_handlers/base' require 'nickserver/hkp/source' require 'nickserver/error_response' module Nickserver module RequestHandlers - class FingerprintHandler + class FingerprintHandler < Base - def call(request) - return unless request.fingerprint - handle_request(request) - end - - protected - - def handle_request(request) - fingerprint = request.fingerprint + def handle + return unless fingerprint if fingerprint.length == 40 && !fingerprint[/\H/] - source = Nickserver::Hkp::Source.new source.get_key_by_fingerprint(fingerprint) else ErrorResponse.new('Fingerprint invalid: ' + fingerprint) end end + protected + + def fingerprint + request.fingerprint + end + + def source + Nickserver::Hkp::Source.new + end + end end end diff --git a/lib/nickserver/request_handlers/hkp_email_handler.rb b/lib/nickserver/request_handlers/hkp_email_handler.rb index 799e138..2f73773 100644 --- a/lib/nickserver/request_handlers/hkp_email_handler.rb +++ b/lib/nickserver/request_handlers/hkp_email_handler.rb @@ -3,16 +3,18 @@ require 'nickserver/hkp/source' module Nickserver module RequestHandlers - class HkpEmailHandler + class HkpEmailHandler < Base - def call(request) - return unless request.email - email = EmailAddress.new(request.email) - source.query(email) + def handle + source.query(email) if request.email end protected + def email + @email ||= EmailAddress.new(request.email) + end + def source Nickserver::Hkp::Source.new end diff --git a/lib/nickserver/request_handlers/invalid_email_handler.rb b/lib/nickserver/request_handlers/invalid_email_handler.rb index eaf8156..bb98f65 100644 --- a/lib/nickserver/request_handlers/invalid_email_handler.rb +++ b/lib/nickserver/request_handlers/invalid_email_handler.rb @@ -1,15 +1,21 @@ +require 'nickserver/request_handlers/base' require 'nickserver/email_address' require 'nickserver/error_response' module Nickserver module RequestHandlers - class InvalidEmailHandler - def call(request) + class InvalidEmailHandler < Base + + def handle return unless request.email - email = EmailAddress.new(request.email) ErrorResponse.new("Not a valid address") if email.invalid? end + protected + + def email + @email ||= EmailAddress.new(request.email) + end end end end diff --git a/lib/nickserver/request_handlers/local_email_handler.rb b/lib/nickserver/request_handlers/local_email_handler.rb index 9e8ed48..9165ef2 100644 --- a/lib/nickserver/request_handlers/local_email_handler.rb +++ b/lib/nickserver/request_handlers/local_email_handler.rb @@ -1,21 +1,25 @@ +require 'nickserver/request_handlers/base' require 'nickserver/email_address' -require 'nickserver/error_response' require 'nickserver/couch_db/source' module Nickserver module RequestHandlers - class LocalEmailHandler + class LocalEmailHandler < Base - def call(request) - return nil unless request.email - domain = Config.domain || request.domain - email = EmailAddress.new(request.email) - return nil unless email.domain?(domain) - source.query email + def handle + source.query(email) if request.email && email.domain?(domain) end protected + def domain + Config.domain || request.domain + end + + def email + @email ||= EmailAddress.new(request.email) + end + def source Nickserver::CouchDB::Source.new end |