component pubsub: implement default configuration:
rel 476
This commit is contained in:
parent
6b2c34190e
commit
572662653f
1 changed files with 28 additions and 1 deletions
|
|
@ -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))
|
||||
|
|
|
|||
Loading…
Reference in a new issue