summaryrefslogtreecommitdiff
path: root/lib/nickserver/wkd/source.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/nickserver/wkd/source.rb')
-rw-r--r--lib/nickserver/wkd/source.rb23
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/nickserver/wkd/source.rb b/lib/nickserver/wkd/source.rb
index 01f376e..750d3fa 100644
--- a/lib/nickserver/wkd/source.rb
+++ b/lib/nickserver/wkd/source.rb
@@ -1,5 +1,7 @@
require 'nickserver/source'
require 'nickserver/response'
+require 'nickserver/wkd/url'
+require 'nickserver/hkp/response'
module Nickserver
module Wkd
@@ -7,10 +9,27 @@ module Nickserver
def query(email)
url = Url.new(email)
- status, body = adapter.get url
- return Nickserver::Response.new(status, body)
+ status, blob = adapter.get url
+ Hkp::Response.new(email.to_s, armor_key(blob)) if status == 200
end
+ protected
+
+ def armor_key(blob)
+ header + encode(blob) + footer
+ end
+
+ def encode(blob)
+ Base64.strict_encode64(blob).scan(/.{1,64}/).join "\n"
+ end
+
+ def header
+ "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n"
+ end
+
+ def footer
+ "\n-----END PGP PUBLIC KEY BLOCK-----\n"
+ end
end
end
end