From 58e6ccfda62bbe36e47992c96d18717212e15d57 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 09:07:13 +0300 Subject: [PATCH 1/8] chore: change config name --- docker-compose.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index fa60175..36146cf 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -24,7 +24,7 @@ services: - '3000:3000' volumes: - './CertSSL:/CertSSL' - - './config.yaml:/config.yaml' + - './config.hjson:/config.hjson' depends_on: - postgres @@ -36,7 +36,7 @@ services: - '3030:3030' volumes: - './CertSSL:/CertSSL' - - './config.yaml:/config.yaml' + - './config.hjson:/config.hjson' depends_on: postgres: condition: service_healthy @@ -50,7 +50,7 @@ services: - '3050:3050' volumes: - './CertSSL:/CertSSL' - - './config.yaml:/config.yaml' + - './config.hjson:/config.hjson' docs: build: @@ -63,7 +63,7 @@ services: dockerfile: Dockerfile-collect-currency restart: unless-stopped volumes: - - './config.yaml:/config.yaml' + - './config.hjson:/config.hjson' depends_on: - postgres From dd24356e811c0b9217fd3c53afa04b1ee2dcc9d1 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 09:43:13 +0300 Subject: [PATCH 2/8] chore(web): Changed the keys of the new config. Improved code readability --- web/main.js | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/web/main.js b/web/main.js index 86a2f43..5d27e2f 100644 --- a/web/main.js +++ b/web/main.js @@ -1,18 +1,24 @@ -const logger = require("../shared/logger"); -const config = require("../shared/config/src/main.js")(); +const logger = require('../shared/logger'); +const config = require('../shared/config/src/main.js')(); -const fs = require("fs"); -const path = require("node:path"); +const fs = require('fs'); +const path = require('node:path'); -const fastify = require("fastify")({ - logger: config["server"]["log"]["print"] ? logger : false, - ...(config["server"]["ssl"]["work"] +const fastify = require('fastify')({ + logger: config['server']['log']['level'] !== 'none' ? logger : false, + ...(config['server']['ssl']['enabled'] ? { - https: { - key: fs.readFileSync(config["server"]["ssl"]["private_key"], "utf8"), - cert: fs.readFileSync(config["server"]["ssl"]["cert"], "utf8"), - }, - } + https: { + key: fs.readFileSync( + config['server']['ssl']['private_key'], + 'utf8', + ), + cert: fs.readFileSync( + config['server']['ssl']['cert'], + 'utf8', + ), + }, + } : false), }); @@ -23,11 +29,10 @@ fastify.register(require('@fastify/static'), { fastify.register(require('./routes/home.js')); - fastify.listen( { port: 3050, - host: config["server"]["host"] ? config["server"]["host"] : "localhost", + host: config['server']['host'] ? config['server']['host'] : 'localhost', }, (err) => { if (err) { From 1964fd333a9e5b4bd1508d8d4ea77412e6c36ad0 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 09:44:49 +0300 Subject: [PATCH 3/8] chore(config): Adapted the code to output a new config. Added an error if there is no config file --- shared/config/package-lock.json | 17 +++++++---------- shared/config/package.json | 2 +- shared/config/src/main.js | 6 +++--- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/shared/config/package-lock.json b/shared/config/package-lock.json index 6f0d56d..5e649ba 100644 --- a/shared/config/package-lock.json +++ b/shared/config/package-lock.json @@ -9,19 +9,16 @@ "version": "1.0.0", "license": "GPL-3.0-or-later", "dependencies": { - "yaml": "^2.5.0" + "hjson": "^3.2.2" } }, - "node_modules/yaml": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", - "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", - "license": "ISC", + "node_modules/hjson": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/hjson/-/hjson-3.2.2.tgz", + "integrity": "sha512-MkUeB0cTIlppeSsndgESkfFD21T2nXPRaBStLtf3cAYA2bVEFdXlodZB0TukwZiobPD1Ksax5DK4RTZeaXCI3Q==", + "license": "MIT", "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" + "hjson": "bin/hjson" } } } diff --git a/shared/config/package.json b/shared/config/package.json index 00b3ddd..e196982 100644 --- a/shared/config/package.json +++ b/shared/config/package.json @@ -17,6 +17,6 @@ "homepage": "https://github.com/Redume/Kekkai#readme", "description": "Config management service", "dependencies": { - "yaml": "^2.5.0" + "hjson": "^3.2.2" } } diff --git a/shared/config/src/main.js b/shared/config/src/main.js index 97b7b20..d0108d8 100644 --- a/shared/config/src/main.js +++ b/shared/config/src/main.js @@ -1,10 +1,10 @@ const fs = require('fs'); -const yaml = require('yaml'); +const hjson = require('hjson'); const config = () => { - if (!fs.existsSync('../config.yaml')) return; + if (!fs.existsSync('../config.hjson')) throw new Error('Config not found'); - return yaml.parse(fs.readFileSync('../config.yaml', 'utf-8')); + return hjson.parse(fs.readFileSync('../config.hjson', 'utf-8')); }; module.exports = config; From c00dea8a81026af8224ea1830dc3d426af94f499 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 10:38:53 +0300 Subject: [PATCH 4/8] =?UTF-8?q?=D1=81hore(chart):=20Made=20parsing=20and?= =?UTF-8?q?=20converting=20hjson=20to=20json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chart/utils/load_config.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/chart/utils/load_config.py b/chart/utils/load_config.py index c6f2bbd..746e106 100644 --- a/chart/utils/load_config.py +++ b/chart/utils/load_config.py @@ -1,20 +1,18 @@ -# pylint: disable=R0801 """ -This module provides a function for loading a YAML configuration file. -The function reads the file content and returns it as a Python dictionary. +Parsing and converting HJSON config to JSON """ -import yaml +import hjson +import json def load_config(file_path: str) -> dict: """ - Loads a YAML configuration file and returns its contents as a dictionary. + Load an HJSON file, convert it to a JSON string with indentation, + and return it. - This function opens the specified YAML file, parses its content, and - returns it in dictionary format, making it accessible for use in - the application. + params: file_path (str): The path to the HJSON file. - :param file_path: The path to the YAML configuration file to be loaded. - :return: A dictionary containing the parsed content of the YAML file. + returns str: The JSON string formatted with indentation. """ with open(file_path, 'r', encoding='utf-8') as file: - return yaml.safe_load(file) + hjson_data = hjson.load(file) + return json.dumps(hjson_data, indent=4) From 6cddaa53a830bc75596c86de1bb3ec925345724c Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 10:39:43 +0300 Subject: [PATCH 5/8] chore(chart): rename config file, yaml to hjson --- chart/database/server.py | 2 +- chart/main.py | 2 +- chart/middleware/plausible_analytics.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/database/server.py b/chart/database/server.py index 293ff24..a5f48de 100644 --- a/chart/database/server.py +++ b/chart/database/server.py @@ -9,7 +9,7 @@ import asyncpg from utils.load_config import load_config -config = load_config('config.yaml') +config = load_config('config.hjson') async def create_pool() -> asyncpg.pool.Pool: """ diff --git a/chart/main.py b/chart/main.py index b194c71..567baee 100644 --- a/chart/main.py +++ b/chart/main.py @@ -16,7 +16,7 @@ from routes import get_chart, get_chart_period from utils.load_config import load_config app = FastAPI() -config = load_config('config.yaml') +config = load_config('config.hjson') if not os.path.exists('../charts'): os.mkdir('../charts') diff --git a/chart/middleware/plausible_analytics.py b/chart/middleware/plausible_analytics.py index 50fa138..7afb4d5 100644 --- a/chart/middleware/plausible_analytics.py +++ b/chart/middleware/plausible_analytics.py @@ -9,7 +9,7 @@ from user_agents import parse as ua_parse from utils.load_config import load_config -config = load_config('config.yaml') +config = load_config('config.hjson') # pylint: disable=too-few-public-methods class PlausibleAnalytics: From f4475ae466c4f6337898907bacc1ff5cc28ad418 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 10:40:06 +0300 Subject: [PATCH 6/8] deps(chart): Replaced pyyaml with hjson. --- chart/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chart/requirements.txt b/chart/requirements.txt index 278ef87..105a064 100644 --- a/chart/requirements.txt +++ b/chart/requirements.txt @@ -1,5 +1,5 @@ matplotlib~=3.9.1 -PyYAML~=6.0.1 +hjson~=3.1.0 uvicorn~=0.29.0 fastapi[standard]~=0.115.2 starlette~=0.40.0 From f307644a8cbaa3acc99c611f68c1a9088d738693 Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 10:47:56 +0300 Subject: [PATCH 7/8] fix(chart): fixed an error with getting a config item --- chart/utils/load_config.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chart/utils/load_config.py b/chart/utils/load_config.py index 746e106..197b974 100644 --- a/chart/utils/load_config.py +++ b/chart/utils/load_config.py @@ -15,4 +15,6 @@ def load_config(file_path: str) -> dict: """ with open(file_path, 'r', encoding='utf-8') as file: hjson_data = hjson.load(file) - return json.dumps(hjson_data, indent=4) + return json.loads( + json.dumps(hjson_data, indent=4) + ) From 64185e75658ef3924c552d812247dd9643b9068f Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 3 Mar 2025 10:52:28 +0300 Subject: [PATCH 8/8] chore(chart): change to new key config --- chart/main.py | 4 ++-- chart/middleware/plausible_analytics.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/main.py b/chart/main.py index 567baee..9fc86f2 100644 --- a/chart/main.py +++ b/chart/main.py @@ -35,10 +35,10 @@ if __name__ == '__main__': port=3030, ssl_keyfile= config['server']['ssl']['private_key'] - if config['server']['ssl']['work'] + if config['server']['ssl']['enabled'] else None, ssl_certfile= config['server']['ssl']['cert'] - if config['server']['ssl']['work'] + if config['server']['ssl']['enabled'] else None ) diff --git a/chart/middleware/plausible_analytics.py b/chart/middleware/plausible_analytics.py index 7afb4d5..9da2b7c 100644 --- a/chart/middleware/plausible_analytics.py +++ b/chart/middleware/plausible_analytics.py @@ -23,7 +23,7 @@ class PlausibleAnalytics: async def __call__(self, request, call_next): response = await call_next(request) - if HTTPStatus(response.status_code).is_client_error or not config['analytics']['work']: + if HTTPStatus(response.status_code).is_client_error or not config['analytics']['enabled']: return response user_agent = request.headers.get('user-agent', 'unknown')