From a66b2477d566196083ebfda8bd1d06e5ef3effc6 Mon Sep 17 00:00:00 2001 From: Jordan Phillips Date: Mon, 25 Oct 2010 08:50:19 +0800 Subject: [PATCH] Expose User options to web and internal interfaces --- hookbox/api/internal.py | 12 ++++++++++++ hookbox/api/web.py | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/hookbox/api/internal.py b/hookbox/api/internal.py index f13d890..d4b8ab0 100644 --- a/hookbox/api/internal.py +++ b/hookbox/api/internal.py @@ -50,6 +50,18 @@ def disconnect_user(self, name): raise ExpectedException("User %s doesn't exist" % (name,)) user = self.server.get_user(name) # TODO: disconnect the user + + def set_user_options(self, user_name, options): + if not self.server.exists_user(user_name): + raise ExpectedException("User %s doesn't exists" % (user_name,)) + user = self.server.get_user(user_name) + user.update_options(**options) + + def get_user_info(self, user_name): + if not self.server.exists_user(user_name): + raise ExpectedException("User %s doesn't exists" % (user_name,)) + user = self.server.get_user(user_name) + return user.serialize() def disconnect(self, identifier): raise ExpectedException("Not Implemented") diff --git a/hookbox/api/web.py b/hookbox/api/web.py index e9055f6..71df88f 100644 --- a/hookbox/api/web.py +++ b/hookbox/api/web.py @@ -85,6 +85,27 @@ def render_subscribe(self, form, start_response): start_response('200 Ok', []) return json.dumps([True, {}]) + def render_set_user_options(self, form, start_response): + user_name = form.pop('user_name', None) + if not user_name: + raise ExpectedException("Missing user_name") + for key, val in form.items(): + try: + form[key] = json.loads(val) + except: + raise ExpectedException("Invalid json value for option %s" % (key,)) + self.api.set_user_options(user_name, form) + start_response('200 Ok', []) + return json.dumps([True, {}]) + + def render_get_user_info(self, form, start_response): + user_name = form.get('user_name', None) + if not user_name: + raise ExpectedException("Missing user_name") + info = self.api.get_user_info(user_name) + start_response('200 Ok', []) + return json.dumps([True, info]) + def render_disconnect(self, form, start_response): identifier = form.get('identifier', None) self.api.disconnect(identifier)