INNER CODE UNIT · Python
match
sabuhish/fastapi-mqtt · fastapi_mqtt/fastmqtt.py:98
def match(topic: str, template: str) -> bool:
"""
Defined match topics
topic: topic name
template: template topic name that contains wildcards
"""
if str(template).startswith("$share/"):
template = template.split("/", 2)[2]
topic_parts = topic.split("/")
template_parts = template.split("/")
for topic_part, part in zip_longest(topic_parts, template_parts):
if part == "#" and not str(topic_part).startswith("$"):
return True
elif (topic_part is None or part not in {"+", topic_part}) or (
part == "+" and topic_part.startswith("$")