Load providers by class & module name. Closes #6

This commit is contained in:
Ian Renton
2025-10-02 10:13:52 +01:00
parent 1a9dc0b634
commit 3addafb8b9
3 changed files with 34 additions and 36 deletions

28
main.py
View File

@@ -6,6 +6,7 @@ import sys
from datetime import datetime
from time import sleep
import importlib
import psutil
import pytz
@@ -41,30 +42,11 @@ def shutdown(sig, frame):
p.stop()
cleanup_timer.stop()
# Utility method to get a data provider based on its config entry.
# Utility method to get a data provider based on the class specified in its config entry.
def get_provider_from_config(config_providers_entry):
match config_providers_entry["type"]:
case "POTA":
return POTA(config_providers_entry)
case "SOTA":
return SOTA(config_providers_entry)
case "WWFF":
return WWFF(config_providers_entry)
case "GMA":
return GMA(config_providers_entry)
case "WWBOTA":
return WWBOTA(config_providers_entry)
case "HEMA":
return HEMA(config_providers_entry)
case "ParksNPeaks":
return ParksNPeaks(config_providers_entry)
case "DXCluster":
return DXCluster(config_providers_entry)
case "RBN":
return RBN(config_providers_entry)
case "APRS-IS":
return APRSIS(config_providers_entry)
return None
module = importlib.import_module('providers.' + config_providers_entry["class"].lower())
provider_class = getattr(module, config_providers_entry["class"])
return provider_class(config_providers_entry)
# Main function