From b708047d28f9e462213621ae4f006659166ff141 Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Thu, 5 Nov 2020 15:28:35 +0000 Subject: config: use from_json to read ogserver config This patch introduces the usage of Flask.Config class so the config can be read at startup (__init__) only once. Config keys must be uppercase so that from_json method does take it into account. dormousehole.readthedocs.io/en/stable/api.html#flask.Config.from_json Prior to this patch each request required opening and closing the ogserver.json file via load_config in views.py. In the future the decorated load_config function inside views.py may be removed to avoid creating multiple instances of the OGServer class. --- ogcp/__init__.py | 4 +++- ogcp/cfg/ogserver.json | 6 +++--- ogcp/og_server.py | 15 +++++---------- ogcp/views.py | 1 - 4 files changed, 11 insertions(+), 15 deletions(-) (limited to 'ogcp') diff --git a/ogcp/__init__.py b/ogcp/__init__.py index 58ba0c3..fb860b9 100644 --- a/ogcp/__init__.py +++ b/ogcp/__init__.py @@ -5,10 +5,12 @@ from flask import Flask from os import urandom app = Flask(__name__) +app.config.from_json('cfg/ogserver.json') +app.secret_key = urandom(16) + babel = Babel(app) csrf = CSRFProtect(app) bootstrap = Bootstrap(app) -app.secret_key = urandom(16) import ogcp.views diff --git a/ogcp/cfg/ogserver.json b/ogcp/cfg/ogserver.json index a066595..9e715d4 100644 --- a/ogcp/cfg/ogserver.json +++ b/ogcp/cfg/ogserver.json @@ -1,5 +1,5 @@ { - "ip": "127.0.0.1", - "port": 8888, - "api_token": "c3fe7bb0395747ec42a25df027585871" + "IP": "127.0.0.1", + "PORT": 8888, + "API_TOKEN": "c3fe7bb0395747ec42a25df027585871" } diff --git a/ogcp/og_server.py b/ogcp/og_server.py index 08c9b08..2ea0363 100644 --- a/ogcp/og_server.py +++ b/ogcp/og_server.py @@ -1,22 +1,17 @@ +from ogcp import app + import requests import json class OGServer: - def __init__(self, ip='127.0.0.1', port=8888, api_token=""): + def __init__(self, ip=app.config['IP'], + port=app.config['PORT'], + api_token=app.config['API_TOKEN']): self.ip = ip self.port = port self.api_token = api_token self._prepare_requests() - def load_config(self, path): - with open(path, 'r') as f: - cfg = json.load(f) - - self.ip = cfg['ip'] - self.port = cfg['port'] - self.api_token = cfg['api_token'] - self._prepare_requests() - def _prepare_requests(self): self.URL = f'http://{self.ip}:{self.port}' self.HEADERS = {'Authorization' : self.api_token} diff --git a/ogcp/views.py b/ogcp/views.py index 09486d5..0b6b320 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -52,7 +52,6 @@ def parse_scopes_from_tree(tree, scope_type): @app.before_request def load_config(): g.server = OGServer() - g.server.load_config('ogcp/cfg/ogserver.json') @app.errorhandler(404) def page_not_found(error): -- cgit v1.2.3-18-g5258