summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/core/dispatcher.py
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2017-02-06 19:38:58 +0100
committerRuben Pollan <meskio@sindominio.net>2017-02-09 18:35:54 +0100
commit374bb846b15596f99da77a4a7c9a348187774534 (patch)
treeb76b30ba3240b892817a0006d98523cf75c44199 /src/leap/bitmask/core/dispatcher.py
parent546190e59ba11fe109d933f4f22fed5398f86010 (diff)
[feat] add account based keymanagement API
- Resolves: #8755
Diffstat (limited to 'src/leap/bitmask/core/dispatcher.py')
-rw-r--r--src/leap/bitmask/core/dispatcher.py56
1 files changed, 36 insertions, 20 deletions
diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py
index 7c1cdbd4..2777d9a9 100644
--- a/src/leap/bitmask/core/dispatcher.py
+++ b/src/leap/bitmask/core/dispatcher.py
@@ -267,58 +267,74 @@ class KeysCmd(SubCommand):
@register_method("[dict]")
def do_LIST(self, service, *parts, **kw):
+ uid = parts[2]
+
private = False
if parts[-1] == 'private':
private = True
- bonafide = kw['bonafide']
- d = bonafide.do_get_active_user()
+ d = defer.succeed(uid)
+ if not uid:
+ d = self._get_active_user(kw['bonafide'])
d.addCallback(service.do_list_keys, private)
return d
@register_method('dict')
def do_EXPORT(self, service, *parts, **kw):
- if len(parts) < 3:
- return defer.fail("An email address is needed")
- address = parts[2]
+ if len(parts) < 4:
+ raise ValueError("An email address is needed")
+ uid = parts[2]
+ address = parts[3]
private = False
if parts[-1] == 'private':
private = True
- bonafide = kw['bonafide']
- d = bonafide.do_get_active_user()
+ d = defer.succeed(uid)
+ if not uid:
+ d = self._get_active_user(kw['bonafide'])
d.addCallback(service.do_export, address, private)
return d
@register_method('dict')
+ @defer.inlineCallbacks
def do_INSERT(self, service, *parts, **kw):
- if len(parts) < 5:
- return defer.fail("An email address is needed")
- address = parts[2]
- validation = parts[3]
- rawkey = parts[4]
-
- bonafide = kw['bonafide']
- d = bonafide.do_get_active_user()
+ if len(parts) < 6:
+ raise ValueError("An email address is needed")
+ uid = parts[2]
+ address = parts[3]
+ validation = parts[4]
+ rawkey = parts[5]
+
+ d = defer.succeed(uid)
+ if not uid:
+ d = self._get_active_user(kw['bonafide'])
d.addCallback(service.do_insert, address, rawkey, validation)
return d
@register_method('str')
+ @defer.inlineCallbacks
def do_DELETE(self, service, *parts, **kw):
- if len(parts) < 3:
- return defer.fail("An email address is needed")
- address = parts[2]
+ if len(parts) < 4:
+ raise ValueError("An email address is needed")
+ uid = parts[2]
+ address = parts[3]
private = False
if parts[-1] == 'private':
private = True
- bonafide = kw['bonafide']
- d = bonafide.do_get_active_user()
+ d = defer.succeed(uid)
+ if not uid:
+ d = self._get_active_user(kw['bonafide'])
d.addCallback(service.do_delete, address, private)
return d
+ def _get_active_user(self, bonafide):
+ d = bonafide.do_get_active_user()
+ d.addCallback(lambda active: active['user'])
+ return d
+
class EventsCmd(SubCommand):