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 |