def parseAttributesFromFieldValueString(self): self._parameterNamesAndValueStrings = {} self._sipURI = None # noinspection PyBroadException try: match = self.__class__.regexForAngleBracketForm.match(self.fieldValueString) if match: # URI uses angle brackets uriAndParametersString = match.group(2) self._sipURI = SIPURI.newParsedFrom(uriAndParametersString) # noinspection PyUnusedLocal foo = self._sipURI.user # We do this to make sure the sipURI gets parsed within our exception handler. headerFieldParametersString = match.group(3) else: # same logic as above, but work on sample, not uriAndParametersString. This will be factored in the real solution. uriAndHeaderFieldParametersMatchGroups = self.__class__.regexForNonAngleBracketForm.match(self.fieldValueString).groups() uriString = uriAndHeaderFieldParametersMatchGroups[0] self._sipURI = SIPURI.newParsedFrom(uriString) # noinspection PyUnusedLocal foo = self._sipURI.user # We do this to make sure the sipURI gets parsed within our exception handler. headerFieldParametersString = uriAndHeaderFieldParametersMatchGroups[1] self._parameterNamesAndValueStrings = dict(self.__class__.regexForFindingParameterNamesAndValues.findall(headerFieldParametersString)) self._attributeHasBeenSet = True except Exception: self._isValid = False else: self._isValid = True
def test_parseSetValuesAndReParse(self): uriString = 'sips:[email protected]:5061;user=phone' uri = SIPURI.newParsedFrom(uriString) self.assertEqual(uriString, uri.rawString) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, 5061) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, '8005551212') self.assertEqual(uri.parameterNamesAndValueStrings, {'user': '******'}) self.assertEqual(uri.parameterNamed('user'), 'phone') self.assertEqual(uri.parameterNamed('nonExistentKey'), None) uri.parameterNamedPut('foo', 42) self.assertEqual('sips:[email protected]:5061;foo=42;user=phone', uri.rawString) uri.host = '192.168.0.100' self.assertEqual('sips:[email protected]:5061;foo=42;user=phone', uri.rawString) uri.port = 5062 self.assertEqual('sips:[email protected]:5062;foo=42;user=phone', uri.rawString) uri.scheme = 'sip' self.assertEqual('sip:[email protected]:5062;foo=42;user=phone', uri.rawString) uri.user = '******' self.assertEqual('sip:[email protected]:5062;foo=42;user=phone', uri.rawString) uri.parameterNamesAndValueStrings = None self.assertEqual('sip:[email protected]:5062', uri.rawString) uri.parameterNamedPut('foo', 42) self.assertEqual('sip:[email protected]:5062;foo=42', uri.rawString) uri.rawString = uriString self.assertEqual(uriString, uri.rawString) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, 5061) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, '8005551212') self.assertEqual(uri.parameterNamesAndValueStrings, {'user': '******'}) self.assertEqual(uri.parameterNamed('user'), 'phone') self.assertEqual(uri.parameterNamed('nonExistentKey'), None)
def test_parseValid007(self): uriString = 'sips:192.168.0.99' uri = SIPURI.newParsedFrom(uriString) self.assertEqual(uriString, uri.rawString) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, None) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, None) self.assertEqual(uri.parameterNamesAndValueStrings, {}) self.assertEqual(uri.parameterNamed('nonExistentKey'), None)
def test_parseValid002(self): uriString = 'sips:[email protected]:5061;user=phone' uri = SIPURI.newParsedFrom(uriString) self.assertEqual(uriString, uri.rawString) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, 5061) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, '8005551212') self.assertEqual(uri.parameterNamesAndValueStrings, {'user': '******'}) self.assertEqual(uri.parameterNamed('user'), 'phone') self.assertEqual(uri.parameterNamed('nonExistentKey'), None)
def test_render007(self): uriString = 'sips:192.168.0.99' uri = SIPURI.newForAttributes(host='192.168.0.99', port=None, scheme='sips', user=None, ) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, None) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, None) self.assertEqual(uri.parameterNamesAndValueStrings, {}) self.assertEqual(uri.parameterNamed('nonExistentKey'), None) self.assertEqual(uriString, uri.rawString)
def test_render003(self): uriString = 'sips:[email protected]:5061' uri = SIPURI.newForAttributes(host='192.168.0.99', port=5061, scheme='sips', user='******' ) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, 5061) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, '8005551212') self.assertEqual(uri.parameterNamesAndValueStrings, {}) self.assertEqual(uri.parameterNamed('nonExistentKey'), None) self.assertEqual(uriString, uri.rawString)
def test_render004(self): uriString = 'sips:[email protected];user=phone' uri = SIPURI.newForAttributes(host='192.168.0.99', port=None, scheme='sips', user='******', parameterNamesAndValueStrings={'user': '******'}) self.assertEqual(uri.host, '192.168.0.99') self.assertEqual(uri.port, None) self.assertEqual(uri.scheme, 'sips') self.assertEqual(uri.user, '8005551212') self.assertEqual(uri.parameterNamesAndValueStrings, {'user': '******'}) self.assertEqual(uri.parameterNamed('user'), 'phone') self.assertEqual(uri.parameterNamed('nonExistentKey'), None) self.assertEqual(uriString, uri.rawString)
def asSIPURI(self): # Via contains the host, port, and transport portions in SIP URI form. No user or scheme parts. # return SIPURI.newForAttributes(host=self.host, port=self.port, transport=self.transport) return SIPURI.newForAttributes(host=self.host, port=self.port)