diff options
| author | azul <azul@riseup.net> | 2016-06-15 14:22:08 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-06-15 14:22:08 +0200 | 
| commit | 3c6dc3d7b902b46b82a3d8cd38bd3fa896024beb (patch) | |
| tree | 559b3998465248138b6f24a76b6b3e55e60f3986 /lib/nickserver/hkp/fetch_key.rb | |
| parent | 5cad637a4a2a3de6b95ff1204fc29174e18b3124 (diff) | |
| parent | 93258bd6fe6247e7af67f423243eba9808e920ee (diff) | |
Merge pull request #3 from azul/refactor/transport-adapters
Refactor em specifics into http adapter
Diffstat (limited to 'lib/nickserver/hkp/fetch_key.rb')
| -rw-r--r-- | lib/nickserver/hkp/fetch_key.rb | 56 | 
1 files changed, 0 insertions, 56 deletions
| diff --git a/lib/nickserver/hkp/fetch_key.rb b/lib/nickserver/hkp/fetch_key.rb deleted file mode 100644 index 44621d3..0000000 --- a/lib/nickserver/hkp/fetch_key.rb +++ /dev/null @@ -1,56 +0,0 @@ -require 'em-http' - -# -# Fetch keys via HKP -# http://tools.ietf.org/html/draft-shaw-openpgp-hkp-00 -# - -module Nickserver; module HKP - -  class FetchKey -    include EM::Deferrable - -    def get(uid) -      FetchKeyInfo.new.search(uid).callback {|key_info_list| -        best = pick_best_key(key_info_list) -        get_key_by_fingerprint(best.keyid) {|key| -          self.succeed key -        } -      }.errback {|status, msg| -        self.fail status, msg -      } -      self -    end - -    # -    # fetches ascii armored OpenPGP public key from the keyserver -    # -    def get_key_by_fingerprint(key_id) -      params = {op: 'get', search: "0x" + key_id, exact: 'on', options: 'mr'} -      http = EventMachine::HttpRequest.new(Config.hkp_url).get(query: params) -      http.callback { -        if http.response_header.status != 200 -          self.fail http.response_header.status, "HKP Request failed" -        else -          yield http.response -        end -      } -      http.errback { -        self.fail 500, http.error -      } -    end - -    protected - -    # -    # for now, just pick the newest key. -    # -    # in the future, we should perhaps pick the newest key -    # that is signed by the oldest key. -    # -    def pick_best_key(key_info_list) -      key_info_list.sort {|a,b| a.creationdate <=> b.creationdate}.last -    end -  end - -end; end
\ No newline at end of file | 
