From 8370161c2363242ce53c8e0e811a52ecb6de18f3 Mon Sep 17 00:00:00 2001
From: Gunnar Schaefer <gsfr@stanford.edu>
Date: Mon, 30 Nov 2015 17:16:53 -0800
Subject: [PATCH] Use config collection for config endpoint

---
 api/api.py    |  5 +++--
 api/config.py |  3 +++
 api/core.py   | 21 ++++-----------------
 3 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/api/api.py b/api/api.py
index a7820d86..a3793626 100644
--- a/api/api.py
+++ b/api/api.py
@@ -7,6 +7,7 @@ import webapp2_extras.routes
 
 from . import core
 from . import jobs
+from . import config
 from handlers import listhandler
 from handlers import userhandler
 from handlers import grouphandler
@@ -54,8 +55,8 @@ routes = [
         webapp2.Route(r'/download',         core.Core, handler_method='download', methods=['GET', 'POST'], name='download'),
         webapp2.Route(r'/reaper',           core.Core, handler_method='reaper', methods=['POST']),
         webapp2.Route(r'/sites',            core.Core, handler_method='sites', methods=['GET']),
-        webapp2.Route(r'/config',           core.Config, handler_method='get_config', methods=['GET']),
-        webapp2.Route(r'/config.js',        core.Config, handler_method='get_config_js', methods=['GET'])
+        webapp2.Route(r'/config',           core.Config, methods=['GET']),
+        webapp2.Route(r'/config.js',        core.Config, handler_method='get_js', methods=['GET'])
     ]),
     webapp2.Route(r'/api/users',            userhandler.UserHandler, handler_method='get_all', methods=['GET']),
     webapp2.Route(r'/api/users',            userhandler.UserHandler, methods=['POST']),
diff --git a/api/config.py b/api/config.py
index 7b75869e..b367e15b 100644
--- a/api/config.py
+++ b/api/config.py
@@ -6,6 +6,9 @@ last_update = datetime.datetime.utcfromtimestamp(0)
 latest_config = None
 
 
+def get_config():
+    return mongo.db.config.find_one({'latest': True}, {'_id': 0, 'latest': 0}) or {}
+
 def _get_item(item):
     global last_update, latest_config
     now = datetime.datetime.utcnow()
diff --git a/api/core.py b/api/core.py
index 690ab209..be927dce 100644
--- a/api/core.py
+++ b/api/core.py
@@ -25,27 +25,14 @@ from . import tempdir as tempfile
 logging.getLogger('MARKDOWN').setLevel(logging.WARNING)
 
 
-# REVIEW: place in config.py?
 class Config(base.RequestHandler):
-    def _get_config_map(self):
-        """
-        Whitelist keys that are safe to give to clients.
-        """
 
-        return {
-            'site': {
-                'insecure': self.app.config['insecure'],
-            },
-            'auth': {
-                'provider':  "Google",
-            }
-        }
+    def get(self):
+        return config.get_config()
 
-    def get_config(self):
-        return self._get_config_map()
+    def get_js(self):
+        self.response.write('config =\n' + json.dumps(self.get(), sort_keys=True, indent=4, separators=(',', ': ')) + '\n;')
 
-    def get_config_js(self):
-        self.response.write("config = " + json.dumps(self._get_config_map()) + ";")
 
 class Core(base.RequestHandler):
 
-- 
GitLab