From d0d128d20304bac9982b9f901c3f12e7ca7c1654 Mon Sep 17 00:00:00 2001 From: creslinux Date: Sat, 23 Jun 2018 09:08:39 +0000 Subject: [PATCH] Moved registering application urls out of the run def and into their own Added 404 handling Split registration of URLs that use rpc.rpc and others into own def. Seems logical to be able to register separately for later use. --- freqtrade/rpc/api_server.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 8927584fe..945e870bc 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -27,13 +27,19 @@ class ApiServerSuperWrap(RPC): self._config = freqtrade.config + # Register application handling + self.register_rest_other() + self.register_rest_rpc_urls() + thread = threading.Thread(target=self.run, daemon=True) thread.start() - def run(self): - """ Method that runs forever """ + def register_rest_other(self): + #Added as a placeholder for app URLs that are not implemented in rpc.rpc + app.register_error_handler(404, self.page_not_found) - # defines the url rules available on the api server + def register_rest_rpc_urls(self): + # register the url rules available on the api server ''' First two arguments passed are /URL and 'Label' Label can be used as a shortcut when refactoring @@ -43,6 +49,9 @@ class ApiServerSuperWrap(RPC): app.add_url_rule('/start', 'start', view_func=self.start, methods=['GET']) app.add_url_rule('/daily', 'daily', view_func=self.daily, methods=['GET']) + def run(self): + """ Method that runs forever """ + """ Section to handle configuration and running of the Rest server also to check and warn if not bound to a loopback, warn on security risk. @@ -81,6 +90,12 @@ class ApiServerSuperWrap(RPC): each Telegram command should have a like local substitute """ + def page_not_found(self, error): + # return "404 not found", 404 + return jsonify({'status': 'error', + 'reason': '''There's no API call for %s''' % request.base_url, + 'code': 404}), 404 + def hello(self): # For simple rest server testing via browser # cmds = 'Try uri:/daily?timescale=7 /profit /balance /status