summaryrefslogtreecommitdiff
path: root/lib/nickserver/couch/fetch_key.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/nickserver/couch/fetch_key.rb')
-rw-r--r--lib/nickserver/couch/fetch_key.rb63
1 files changed, 0 insertions, 63 deletions
diff --git a/lib/nickserver/couch/fetch_key.rb b/lib/nickserver/couch/fetch_key.rb
deleted file mode 100644
index 3fe2a63..0000000
--- a/lib/nickserver/couch/fetch_key.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'em-http'
-require 'json'
-
-module Nickserver; module Couch
- class FetchKey
- include EM::Deferrable
-
- VIEW = "_design/Identity/_view/pgp_key_by_email"
-
- def initialize(options={})
- @timeout = 5
- end
-
- def get(uid)
- couch_request(uid)
- self
- end
-
- protected
-
- #
- # For example:
- # curl "$COUCH/identities/_design/Identity/_view/pgp_key_by_email?key=\"test1@bitmask.net\""
- #
- def couch_request(uid)
- query = {"reduce" => "false", "key" => "\"#{uid}\""}
- request = EventMachine::HttpRequest.new(FetchKey.couch_url).get(timeout: @timeout, query: query)
- request.callback {|http|
- if http.response_header.status != 200
- self.fail http.response_header.status, 'Unknown Error'
- else
- self.succeed parse_key_from_response(uid, http.response)
- end
- }.errback {|http|
- self.fail 0, http.error
- }
- end
-
- def parse_key_from_response(uid, response)
- json = JSON.load(response)
- if json["rows"].empty?
- self.fail 404, "Not Found"
- else
- return json["rows"].first["value"]
- end
- rescue Exception
- self.fail 0, "Error parsing CouchDB reply"
- end
-
- def self.couch_url
- @couch_url ||= begin
- url = ['http://']
- if Config.couch_user
- url.push Config.couch_user, ':', Config.couch_password, '@'
- end
- url.push Config.couch_host, ':', Config.couch_port, '/', Config.couch_database
- url.push '/', VIEW
- url.join
- end
- end
-
- end
-end; end \ No newline at end of file