diff --git a/source/bring_handler.py b/source/bring_handler.py index 7af031a..3b631e3 100644 --- a/source/bring_handler.py +++ b/source/bring_handler.py @@ -3,11 +3,10 @@ import aiohttp from bring_api import Bring, BringItemOperation, BringNotificationType +from environment_variable_getter import EnvironmentVariableGetter from ingredient import Ingredient from logger_mixin import LoggerMixin -from source.environment_variable_getter import EnvironmentVariableGetter - class BringHandler(LoggerMixin): def __init__(self, loop: asyncio.AbstractEventLoop): diff --git a/source/environment_variable_getter.py b/source/environment_variable_getter.py index f88034e..62a9749 100644 --- a/source/environment_variable_getter.py +++ b/source/environment_variable_getter.py @@ -1,4 +1,5 @@ import os +from typing import Any from dotenv import find_dotenv, load_dotenv @@ -10,8 +11,14 @@ class EnvironmentVariableGetter: @staticmethod - def get(name_of_variable: str) -> str: - value = os.environ[name_of_variable] - if value == "": - raise KeyError(f'The environment variable "{name_of_variable}" is not set!') - return value + def get(name_of_variable: str, default_value: Any = None) -> str: + try: + value = os.environ[name_of_variable] + if value == "": + raise KeyError() + return value + except KeyError: + if default_value is not None: + return default_value + + raise RuntimeError(f'The environment variable "{name_of_variable}" is not set!') from None diff --git a/source/main.py b/source/main.py index 10f0ddd..bcfda08 100644 --- a/source/main.py +++ b/source/main.py @@ -1,15 +1,13 @@ import asyncio import logging -import os from bring_handler import BringHandler from dotenv import load_dotenv +from environment_variable_getter import EnvironmentVariableGetter from flask import Flask, request from ingredient import Ingredient from logger_mixin import LoggerMixin -from source.environment_variable_getter import EnvironmentVariableGetter - load_dotenv() app = Flask(__name__) @@ -60,7 +58,7 @@ def status_handler() -> str: def parse_ignored_ingredients() -> list[Ingredient]: try: ignored_ingredients_input = EnvironmentVariableGetter.get("IGNORED_INGREDIENTS") - except KeyError: + except RuntimeError: logger.log.info( 'The variable IGNORED_INGREDIENTS is not set. All ingredients will be added. Consider adding something like "Salt,Pepper"' ) @@ -80,7 +78,7 @@ def parse_ignored_ingredients() -> list[Ingredient]: bring_handler = BringHandler(loop) ignored_ingredients = parse_ignored_ingredients() - host = os.getenv("HTTP_HOST", "0.0.0.0") - port = int(os.getenv("HTTP_PORT", 8742)) + host = EnvironmentVariableGetter.get("HTTP_HOST", "0.0.0.0") + port = int(EnvironmentVariableGetter.get("HTTP_PORT", 8742)) logger.log.info(f"Listening on {host}:{port}") app.run(host=host, port=port)