summaryrefslogtreecommitdiff
path: root/lib/nickserver/wkd/source.rb
blob: 750d3fa34fdbe18f9beda5e14c6b13be4e9da2c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require 'nickserver/source'
require 'nickserver/response'
require 'nickserver/wkd/url'
require 'nickserver/hkp/response'

module Nickserver
  module Wkd
    class Source < Nickserver::Source

      def query(email)
        url = Url.new(email)
        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