From f229c3ec2c0ef0750e3fc0c1f8340a111bbea7dc Mon Sep 17 00:00:00 2001
From: Arksine <arksine.code@gmail.com>
Date: Mon, 15 Feb 2021 20:01:07 -0500
Subject: [PATCH] moonraker: add "GET /server/config" endpoint

Clients may call this method to retrieve moonraker's current configuration in json format.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
---
 moonraker/moonraker.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/moonraker/moonraker.py b/moonraker/moonraker.py
index 9543076..c168550 100755
--- a/moonraker/moonraker.py
+++ b/moonraker/moonraker.py
@@ -38,7 +38,7 @@ class Server:
     error = ServerError
     def __init__(self, args, file_logger):
         self.file_logger = file_logger
-        config = confighelper.get_configuration(self, args)
+        self.config = config = confighelper.get_configuration(self, args)
         # log config file
         strio = io.StringIO()
         config.write_config(strio)
@@ -76,6 +76,8 @@ class Server:
 
         self.register_endpoint(
             "/server/info", ['GET'], self._handle_info_request)
+        self.register_endpoint(
+            "/server/config", ['GET'], self._handle_config_request)
         self.register_endpoint(
             "/server/restart", ['POST'], self._handle_server_restart)
 
@@ -479,6 +481,11 @@ class Server:
             'failed_plugins': self.failed_plugins,
             'registered_directories': reg_dirs}
 
+    async def _handle_config_request(self, web_request):
+        return {
+            'config': self.config.get_parsed_config()
+        }
+
 class KlippyConnection:
     def __init__(self, on_recd, on_close):
         self.ioloop = IOLoop.current()