MCPcopy Create free account
hub / github.com/andreikop/python-ws-discovery / parseProbeMatchMessage

Function parseProbeMatchMessage

wsdiscovery/actions/probematch.py:68–105  ·  view source on GitHub ↗

parse a XML message into a SOAP envelope object

(dom)

Source from the content-addressed store, hash-verified

66
67
68def parseProbeMatchMessage(dom):
69 "parse a XML message into a SOAP envelope object"
70
71 env = SoapEnvelope()
72 env.setAction(NS_ACTION_PROBE_MATCH)
73
74 env.setMessageId(dom.getElementsByTagNameNS(NS_ADDRESSING, "MessageID")[0].firstChild.data.strip())
75 env.setRelatesTo(dom.getElementsByTagNameNS(NS_ADDRESSING, "RelatesTo")[0].firstChild.data.strip())
76 # Even though To is required in WS-Discovery, some devices omit it
77 elem = dom.getElementsByTagNameNS(NS_ADDRESSING, "To").item(0)
78 if elem:
79 env.setTo(elem.firstChild.data.strip())
80
81 _parseAppSequence(dom, env)
82
83 pmNodes = dom.getElementsByTagNameNS(NS_DISCOVERY, "ProbeMatch")
84 for node in pmNodes:
85 epr = node.getElementsByTagNameNS(NS_ADDRESSING, "Address")[0].firstChild.data.strip()
86
87 types = []
88 typeNodes = node.getElementsByTagNameNS(NS_DISCOVERY, "Types")
89 if len(typeNodes) > 0:
90 types = getTypes(typeNodes[0])
91
92 scopes = []
93 scopeNodes = node.getElementsByTagNameNS(NS_DISCOVERY, "Scopes")
94 if len(scopeNodes) > 0:
95 scopes = getScopes(scopeNodes[0])
96
97 xAddrs = []
98 xAddrNodes = node.getElementsByTagNameNS(NS_DISCOVERY, "XAddrs")
99 if len(xAddrNodes) > 0:
100 xAddrs = getXAddrs(xAddrNodes[0])
101
102 mdv = node.getElementsByTagNameNS(NS_DISCOVERY, "MetadataVersion")[0].firstChild.data.strip()
103 env.getProbeResolveMatches().append(ProbeResolveMatch(epr, types, scopes, xAddrs, mdv))
104
105 return env
106
107
108

Callers 1

parseSOAPMessageFunction · 0.85

Calls 11

setActionMethod · 0.95
setMessageIdMethod · 0.95
setRelatesToMethod · 0.95
setToMethod · 0.95
SoapEnvelopeClass · 0.85
_parseAppSequenceFunction · 0.85
getTypesFunction · 0.85
getScopesFunction · 0.85
getXAddrsFunction · 0.85
ProbeResolveMatchClass · 0.85

Tested by

no test coverage detected