From a73a944c14cf790bb5d6220f7649d598993561dd Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Sun, 7 Jan 2018 14:10:42 +0100 Subject: [PATCH] add bwPacket class --- boswatch/packet/__init__.py | 1 + boswatch/packet/packet.py | 92 +++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 boswatch/packet/__init__.py create mode 100644 boswatch/packet/packet.py diff --git a/boswatch/packet/__init__.py b/boswatch/packet/__init__.py new file mode 100644 index 0000000..9bad579 --- /dev/null +++ b/boswatch/packet/__init__.py @@ -0,0 +1 @@ +# coding=utf-8 diff --git a/boswatch/packet/packet.py b/boswatch/packet/packet.py new file mode 100644 index 0000000..0af4ce0 --- /dev/null +++ b/boswatch/packet/packet.py @@ -0,0 +1,92 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +"""! + ____ ____ ______ __ __ __ _____ + / __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ / + / __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ < + / /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ / +/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/ + German BOS Information Script + by Bastian Schroll + +@file: packet.py +@date: 06.01.2018 +@author: Bastian Schroll +@description: Class for a BOSWatch data packet +""" +import logging +import time +from boswatch import config +from boswatch import version + +logging.debug("- %s loaded", __name__) + + +class Packet: + """!Class implementation of an BOSWatch packet""" + + def __init__(self, bwPacket=None): + """!Build a new BOSWatch packet or copy existing data in it + + @param bwPacket: Existing data to copy""" + if bwPacket is None: + logging.debug("create new bwPacket") + self._packet = {"timestamp": time.time()} + else: + logging.debug("create bwPacket") + self._packet = eval(bwPacket) + + def __str__(self): + """!Return the intern _packet dict as string""" + return str(self._packet) + + def setField(self, fieldName, value): + """!Set a field in the intern _packet dict + + @param fieldName: Name of the data to set + @param value: Value to set""" + self._packet[fieldName] = str(value) + + def getField(self, fieldName): + """!Returns the value from a single field. + If field not existing `None` is returned + + @param fieldName: Name of the field + @return Value or None""" + try: + return self._packet[fieldName] + except: + logging.warning("field not found: %s", fieldName) + return None + + def addClientData(self): + """!Add the client information to the decoded data + + This function adds the following data to the bwPacket: + - clientName + - clientVersion + - clientBuildDate + - clientBranch + - inputSource + - frequency""" + logging.debug("add client data to bwPacket") + self.setField("clientName", config.getConfig("Client", "Name")) + self.setField("clientVersion", version.client) + self.setField("clientBuildDate", version.date) + self.setField("clientBranch", version.branch) + self.setField("inputSource", config.getConfig("Server", "InputSource")) + self.setField("frequency", config.getConfig("Stick", "Frequency")) + + def addServerData(self): + """!Add the server information to the decoded data + + This function adds the following data to the bwPacket: + - serverName + - serverVersion + - serverBuildDate + - serverBranch""" + logging.debug("add server data to bwPacket") + self.setField("serverName", config.getConfig("Server", "Name")) + self.setField("serverVersion", version.server) + self.setField("serverBuildDate", version.date) + self.setField("serverBranch", version.branch)