component pubsub: implement default configuration:

rel 476
This commit is contained in:
Goffi 2026-04-09 10:26:08 +02:00
commit 572662653f

View file

@ -564,7 +564,34 @@ class PubsubResource(pubsub.PubSubResource):
return defer.ensureDeferred(self._default(request))
async def _default(self, request: pubsub.PubSubRequest) -> dict[str, object]:
raise pubsub.Unsupported("retrieve-default")
"""Return default node configuration.
@param request: Default configuration request.
@return: Default configuration values.
"""
node_type = request.nodeType or "leaf"
if node_type != "leaf":
raise error.StanzaError(
"not-acceptable", text=f"Unknown node type: {node_type!r}"
)
# we build from PubsubNodeConfig defaults
config = PubsubNodeConfig()
default_config: dict[str, object] = {}
for field_name, value in config.__dict__.items():
try:
pubsub_var = PubsubNodeConfig._field_var_mapping[field_name]
except KeyError:
log.error(f"Missing field mapping for {field_name!r}, ignoring.")
continue
if value is not None:
default_config[pubsub_var] = str(value)
return default_config
def configureGet(self, request: pubsub.PubSubRequest) -> defer.Deferred[dict]:
return defer.ensureDeferred(self._configureGet(request))