Yuvipanda has submitted this change and it was merged.

Change subject: Add support for registering for GitHub rsubscriptions too
......................................................................


Add support for registering for GitHub rsubscriptions too

Also refactor things into a class to avoid shitty code.

Change-Id: Ie86d5852e0e983c0223966cf73a5236651717107
---
M src/registrar.py
1 file changed, 33 insertions(+), 20 deletions(-)

Approvals:
  Yuvipanda: Verified; Looks good to me, approved



diff --git a/src/registrar.py b/src/registrar.py
index 1285ae3..20916f7 100644
--- a/src/registrar.py
+++ b/src/registrar.py
@@ -19,8 +19,12 @@
 
 REDIS_DB = config['redis']['db']
 REDIS_HOST = config['redis']['host']
-PREFIX = config['stream_receiver']['redis_prefix']
-CLIENTS_KEY = config['stream_receiver']['clients_key']
+
+SERVICES = {
+        'gerrit': config['stream_receiver'],
+        'github': config['github_receiver']
+}
+
 MYSQL_DB = config['mysql']['db']
 MYSQL_HOST = config['mysql']['host']
 
@@ -34,21 +38,26 @@
 db = storage.DB(MYSQL_HOST, MYSQL_DB)
 logging.info('MySql connection to %s suceceded', MYSQL_HOST)
 
-def make_key(*key_parts):
-    return PREFIX + "_" + '.'.join(key_parts)
+class Service(object):
+    def __init__(self, service_name):
+        self.service = SERVICES[service_name]
 
-def add_subscription(msg):
-    # Save these explicitly, to avoid them from getting lost
-    key = generate_random_string(32)
-    red.pipeline().sadd(make_key(CLIENTS_KEY), key).save().execute()
-    db.insert(key, msg['service'], msg['description'], msg['createdby'])
-    logging.info('Added key %s' % key)
-    return "Created key: %s and started subscription" % key
+    def _make_key(self, *key_parts):
+        return self.service['redis_prefix'] + "_" + '.'.join(key_parts)
 
-def delete_subscription(msg):
-    red.pipeline().delete(msg['key']).srem(make_key(CLIENTS_KEY), 
msg['key']).save().execute()
-    logging.info('Removed key %s' % msg['key'])
-    return "Removed key"
+    def add_subscription(self, msg):
+        key = generate_random_string(32)
+        clients_key = self._make_key(self.service['clients_key'])
+        red.pipeline().sadd(clients_key, key).save().execute()
+        db.insert(key, msg['service'], msg['description'], msg['createdby'])
+        logging.info('Added key %s' % key)
+        return "Created key: %s and started subscription" % key
+
+    def delete_subscription(msg):
+        clients_key = self._make_key(self.service['clients_key'])
+        red.pipeline().delete(msg['key']).srem(clients_key, 
msg['key']).save().execute()
+        logging.info('Removed key %s' % msg['key'])
+        return "Removed key"
 
 # Assumes that files created will, by default, not be writable by others
 # Good enough security, eh?
@@ -85,12 +94,16 @@
             except ValueError:
                 logging.exception("Invalid JSON!")
                 continue
-            if msg['action'] == 'add':
-                ret = add_subscription(msg)
-            elif msg['action'] == 'delete':
-                ret = delete_subscription(msg)
+            if 'service' in msg and msg['service'] in ('github', 'gerrit'):
+                service = Service(msg['service'])
+                if msg['action'] == 'add':
+                    ret = service.add_subscription(msg)
+                elif msg['action'] == 'delete':
+                    ret = service.delete_subscription(msg)
+                else:
+                    ret = "Unrecognized action: %s" % msg['service']
             else:
-                ret = "Unrecognized action: %s " % msg.action
+                ret = "Unrecognized service: %s" % msg['service']
             socket.send(ret)
     except: 
         # Log exceptions, and make sure we cleanup the addressfile

-- 
To view, visit https://gerrit.wikimedia.org/r/77559
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie86d5852e0e983c0223966cf73a5236651717107
Gerrit-PatchSet: 2
Gerrit-Project: labs/tools/gerrit-to-redis
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to