From d77a6efc189ae92b8988455366fbfa13d0914884 Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Thu, 8 Jun 2023 19:27:23 +0100 Subject: [PATCH] feat/admin_update_backend_config --- ovos_backend_client/api.py | 3 +++ ovos_backend_client/backends/base.py | 4 ++++ ovos_backend_client/backends/offline.py | 5 ++++- ovos_backend_client/backends/personal.py | 5 +++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ovos_backend_client/api.py b/ovos_backend_client/api.py index 85e8322..fa75f0a 100644 --- a/ovos_backend_client/api.py +++ b/ovos_backend_client/api.py @@ -86,6 +86,9 @@ def validate_backend_type(self): if not API_REGISTRY[self.backend_type]["admin"]: raise ValueError(f"{self.__class__.__name__} not available for {self.backend_type}") + def update_backend_config(self, config): + return self.backend.admin_update_backend_config(config) + def pair(self, uuid=None): return self.backend.admin_pair(uuid) diff --git a/ovos_backend_client/backends/base.py b/ovos_backend_client/backends/base.py index 2c77f69..2fd4015 100644 --- a/ovos_backend_client/backends/base.py +++ b/ovos_backend_client/backends/base.py @@ -402,6 +402,10 @@ def skill_settings_download(self): def admin_pair(self, uuid=None): raise NotImplementedError() + @abc.abstractmethod + def admin_update_backend_config(self, config): + raise NotImplementedError() + @abc.abstractmethod def admin_set_device_location(self, uuid, loc): """ diff --git a/ovos_backend_client/backends/offline.py b/ovos_backend_client/backends/offline.py index 63158f2..384741c 100644 --- a/ovos_backend_client/backends/offline.py +++ b/ovos_backend_client/backends/offline.py @@ -15,7 +15,7 @@ from ovos_utils.network_utils import get_external_ip from ovos_utils.smtp_utils import send_smtp from ovos_utils.xdg_utils import xdg_data_home - +from ovos_utils.log import LOG from ovos_backend_client.backends.base import AbstractBackend, BackendType from ovos_backend_client.database import JsonMetricDatabase, JsonWakeWordDatabase, \ SkillSettingsModel, OAuthTokenDatabase, OAuthApplicationDatabase, DeviceModel, JsonUtteranceDatabase @@ -436,6 +436,9 @@ def oauth_get_token(self, dev_cred): return self.db_get_oauth_token(dev_cred) # Admin API + def admin_update_backend_config(self, config): + LOG.error("tried to update backend config, but not using a backend. ignoring") + def admin_pair(self, uuid=None): uuid = uuid or str(uuid4()) # create dummy identity file for third parties expecting it for pairing checks diff --git a/ovos_backend_client/backends/personal.py b/ovos_backend_client/backends/personal.py index 299cabd..0035858 100644 --- a/ovos_backend_client/backends/personal.py +++ b/ovos_backend_client/backends/personal.py @@ -389,6 +389,11 @@ def admin_pair(self, uuid=None): IdentityManager.save(identity) return identity + def admin_update_backend_config(self, config): + return self.post(f"{self.backend_url}/{self.backend_version}/admin/config", + json={"config": config}, + headers={"Authorization": f"Bearer {self.credentials['admin']}"}).json() + def admin_set_device_location(self, uuid, loc): """ loc = {