Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • fxk8y/SpiderMQTT
1 result
Show changes
Commits on Source (2)
......@@ -111,17 +111,17 @@ class Message:
"""Marker object for caching failed conversions"""
pass
def __init__(self, topic: str, payload: bytearray):
self.cache = {}
self.topic = topic
self.payload = payload
def __init__(self, topic: str, payload: bytes):
self.cache = {}
self.topic = str(topic)
self.payload = bytes(payload)
def raw(self):
"""Get the raw payload as bytearray"""
def raw(self) -> bytes:
"""Get the raw payload as bytes"""
return self.payload
def bool(self, default=False):
def bool(self, default=False) -> bool:
"""Coerce payload to bool
'true', 'yes', 'ja', and '1' are treated as True.
......@@ -138,9 +138,9 @@ class Message:
else:
return Message.DEFAULT
return self._getOrElseUpdate(bool, convert, default)
return self.__getOrElseUpdate(bool, convert, default)
def int(self, default=0):
def int(self, default=0) -> int:
"""Coerce payload to int"""
def convert():
......@@ -149,9 +149,9 @@ class Message:
except:
return Message.DEFAULT
return self._getOrElseUpdate(int, convert, default)
return self.__getOrElseUpdate(int, convert, default)
def float(self, default=0.0):
def float(self, default=0.0) -> float:
"""Coerce payload to float"""
def convert():
......@@ -160,9 +160,9 @@ class Message:
except:
return Message.DEFAULT
return self._getOrElseUpdate(float, convert, default)
return self.__getOrElseUpdate(float, convert, default)
def complex(self, default=0j):
def complex(self, default=0j) -> complex:
"""Coerce payload to complex"""
def convert():
......@@ -171,9 +171,9 @@ class Message:
except:
return Message.DEFAULT
return self._getOrElseUpdate(complex, convert, default)
return self.__getOrElseUpdate(complex, convert, default)
def str(self, default=''):
def str(self, default='') -> str:
"""Decodes the payload as UTF-8"""
def convert():
......@@ -182,9 +182,9 @@ class Message:
except:
return Message.DEFAULT
return self._getOrElseUpdate(str, convert, default)
return self.__getOrElseUpdate(str, convert, default)
def json(self, default={}):
def json(self, default={}) -> dict: # TODO: Use frozendict…?
"""Parses the payload as a JSON object"""
def convert():
......@@ -193,9 +193,9 @@ class Message:
except:
return Message.DEFAULT
return self._getOrElseUpdate("json", convert, default)
return self.__getOrElseUpdate("json", convert, default)
def yaml(self, default={}):
def yaml(self, default={}) -> dict: # TODO: Use frozendict…?
"""Parses the payload as a YAML document"""
def convert():
......@@ -204,9 +204,9 @@ class Message:
except:
return Message.DEFAULT
return self._getOrElseUpdate("yaml", convert, default)
return self.__getOrElseUpdate("yaml", convert, default)
def _getOrElseUpdate(self, key, f, default):
def __getOrElseUpdate(self, key, f, default):
if key in self.cache:
out = self.cache[key]
......