__filename__="tox.py" __author__="Bob Mottram" __license__="AGPL3+" __version__="1.1.0" __maintainer__="Bob Mottram" __email__="bob@freedombone.net" __status__="Production" import json def getToxAddress(actorJson: {}) -> str: """Returns tox address for the given actor """ if not actorJson.get('attachment'): return '' for propertyValue in actorJson['attachment']: if not propertyValue.get('name'): continue if not propertyValue['name'].lower().startswith('tox'): continue if not propertyValue.get('type'): continue if not propertyValue.get('value'): continue if propertyValue['type']!='PropertyValue': continue propertyValue['value']=propertyValue['value'].strip() if len(propertyValue['value'])!=76: continue if propertyValue['value'].upper()!=propertyValue['value']: continue if '"' in propertyValue['value']: continue if ' ' in propertyValue['value']: continue if ',' in propertyValue['value']: continue if '.' in propertyValue['value']: continue return propertyValue['value'] return '' def setToxAddress(actorJson: {},toxAddress: str) -> None: """Sets an tox address for the given actor """ if not actorJson.get('attachment'): actorJson['attachment']=[] # remove any existing value propertyFound=None for propertyValue in actorJson['attachment']: if not propertyValue.get('name'): continue if not propertyValue.get('type'): continue if not propertyValue['name'].lower().startswith('tox'): continue propertyFound=propertyValue break if propertyFound: actorJson['attachment'].remove(propertyFound) if len(toxAddress)!=76: return if toxAddress.upper()!=toxAddress: return if '"' in toxAddress: return if ' ' in toxAddress: return if '.' in toxAddress: return if ',' in toxAddress: return for propertyValue in actorJson['attachment']: if not propertyValue.get('name'): continue if not propertyValue.get('type'): continue if not propertyValue['name'].lower().startswith('tox'): continue if propertyValue['type']!='PropertyValue': continue propertyValue['value']=toxAddress return newToxAddress={ "name": "Tox", "type": "PropertyValue", "value": toxAddress } actorJson['attachment'].append(newToxAddress)