diff options
author | Kali Kaneko <kali@futeisha.org> | 2013-08-16 20:43:29 +0200 |
---|---|---|
committer | Kali Kaneko <kali@futeisha.org> | 2013-08-16 20:43:29 +0200 |
commit | 7d194296f69c97f67d117286086a0fcba3500dfe (patch) | |
tree | d2f5f5ff7da0cb5924ee1e79d5c987ac043d174f | |
parent | cc76711ff17e7f45eca4a28a601b792fd15dc64f (diff) | |
parent | 79dae47bf729a04c7b633234ca634949a6172720 (diff) |
Merge remote-tracking branch 'chiiph/feature/signal_events' into develop
-rw-r--r-- | keymanager/changes/bug_signal_events | 2 | ||||
-rw-r--r-- | keymanager/src/leap/keymanager/__init__.py | 31 |
2 files changed, 26 insertions, 7 deletions
diff --git a/keymanager/changes/bug_signal_events b/keymanager/changes/bug_signal_events new file mode 100644 index 0000000..6149c56 --- /dev/null +++ b/keymanager/changes/bug_signal_events @@ -0,0 +1,2 @@ + o Signal different key related events, like key generation, key + upload.
\ No newline at end of file diff --git a/keymanager/src/leap/keymanager/__init__.py b/keymanager/src/leap/keymanager/__init__.py index e6122ff..20e44fd 100644 --- a/keymanager/src/leap/keymanager/__init__.py +++ b/keymanager/src/leap/keymanager/__init__.py @@ -24,10 +24,11 @@ import logging import requests from leap.common.check import leap_assert, leap_assert_type -from leap.keymanager.errors import ( - KeyNotFound, - NoPasswordGiven, -) +from leap.common.events import signal +from leap.common.events import events_pb2 as proto + +from leap.keymanager.errors import KeyNotFound + from leap.keymanager.keys import ( EncryptionKey, build_key_from_dict, @@ -222,6 +223,7 @@ class KeyManager(object): self._api_version, self._uid) self._put(uri, data) + signal(proto.KEYMANAGER_DONE_UPLOADING_KEYS, self._address) def get_key(self, address, ktype, private=False, fetch_remote=True): """ @@ -246,15 +248,26 @@ class KeyManager(object): ktype in self._wrapper_map, 'Unkown key type: %s.' % str(ktype)) try: + signal(proto.KEYMANAGER_LOOKING_FOR_KEY, address) # return key if it exists in local database - return self._wrapper_map[ktype].get_key(address, private=private) + key = self._wrapper_map[ktype].get_key(address, private=private) + signal(proto.KEYMANAGER_KEY_FOUND, address) + + return key except KeyNotFound: + signal(proto.KEYMANAGER_KEY_NOT_FOUND, address) + # we will only try to fetch a key from nickserver if fetch_remote # is True and the key is not private. if fetch_remote is False or private is True: raise + + signal(proto.KEYMANAGER_LOOKING_FOR_KEY, address) self._fetch_keys_from_server(address) - return self._wrapper_map[ktype].get_key(address, private=False) + key = self._wrapper_map[ktype].get_key(address, private=False) + signal(proto.KEYMANAGER_KEY_FOUND, address) + + return key def get_all_keys_in_local_db(self, private=False): """ @@ -296,7 +309,11 @@ class KeyManager(object): :return: The generated key. :rtype: EncryptionKey """ - return self._wrapper_map[ktype].gen_key(self._address) + signal(proto.KEYMANAGER_STARTED_KEY_GENERATION, self._address) + key = self._wrapper_map[ktype].gen_key(self._address) + signal(proto.KEYMANAGER_FINISHED_KEY_GENERATION, self._address) + + return key # # Setters/getters |