plugin XEP-0060: add a force options for publish options in send_items:

The new `force` option can be used to force the update of configuration is
`publish-option` fails.

Use this new `force` option in XEP-0384.
This commit is contained in:
Goffi 2024-07-14 16:45:17 +02:00
commit 01e695cebb
2 changed files with 18 additions and 2 deletions

View file

@ -602,6 +602,9 @@ class XEP_0060(object):
- self.EXTRA_ON_PRECOND_NOT_MET(str): policy to have when publishing is
failing du to failing precondition. Value can be:
* raise (default): raise the exception
* force: try to re-configure the node with the given option. Be sure to
use this option carefully, and not not give public access to a node
which has not on purpose.
* publish_without_options: re-publish without the publish-options.
A warning will be logged showing that the publish-options could not
be used
@ -638,6 +641,19 @@ class XEP_0060(object):
policy = extra.get(self.EXTRA_ON_PRECOND_NOT_MET, "raise")
if policy == "raise":
raise e
elif policy == "force":
log.debug(
f"[{client.profile}] Force configuration for {nodeIdentifier!r} "
f"at {service}: {publish_options}"
)
await self.setConfiguration(
client, service, nodeIdentifier, publish_options
)
log.debug("Configuration updated.")
return await self.send_items(
client, service, nodeIdentifier, items, sender, extra
)
elif policy == "publish_without_options":
log.warning(
_(

View file

@ -891,7 +891,7 @@ def make_session_manager(
XEP_0060.OPT_ACCESS_MODEL: "open",
XEP_0060.OPT_MAX_ITEMS: "max",
},
XEP_0060.EXTRA_ON_PRECOND_NOT_MET: "raise",
XEP_0060.EXTRA_ON_PRECOND_NOT_MET: "force",
},
)
except (error.StanzaError, Exception) as e:
@ -1059,7 +1059,7 @@ def make_session_manager(
XEP_0060.OPT_MAX_ITEMS: 1,
XEP_0060.OPT_ACCESS_MODEL: "open",
},
XEP_0060.EXTRA_ON_PRECOND_NOT_MET: "raise",
XEP_0060.EXTRA_ON_PRECOND_NOT_MET: "force",
},
)
except (error.StanzaError, Exception) as e: