File: //usr/lib64/python2.7/site-packages/wsdiscovery/actions/resolve.py
from ..namespaces import NS_WSA, NS_WSD
from ..envelope import SoapEnvelope
from ..util import createSkelSoapMessage, getBodyEl, getHeaderEl, addElementWithText, \
addEPR, addTypes, addScopes, getDocAsString, getScopes
ACTION_RESOLVE = "http://schemas.xmlsoap.org/ws/2005/04/discovery/Resolve"
def createResolveMessage(env):
doc = createSkelSoapMessage(ACTION_RESOLVE)
bodyEl = getBodyEl(doc)
headerEl = getHeaderEl(doc)
addElementWithText(doc, headerEl, "wsa:MessageID", NS_WSA, env.getMessageId())
addElementWithText(doc, headerEl, "wsa:To", NS_WSA, env.getTo())
if len(env.getReplyTo()) > 0:
addElementWithText(doc, headerEl, "wsa:ReplyTo", NS_WSA, env.getReplyTo())
resolveEl = doc.createElementNS(NS_WSD, "wsd:Resolve")
addEPR(doc, resolveEl, env.getEPR())
bodyEl.appendChild(resolveEl)
return getDocAsString(doc)
def parseResolveMessage(dom):
env = SoapEnvelope()
env.setAction(ACTION_RESOLVE)
try:
env.setMessageId(dom.getElementsByTagNameNS(NS_WSA, "MessageID")[0].firstChild.data.strip())
replyToNodes = dom.getElementsByTagNameNS(NS_WSA, "ReplyTo")
if len(replyToNodes) > 0:
env.setReplyTo(replyToNodes[0].firstChild.data.strip())
env.setTo(dom.getElementsByTagNameNS(NS_WSA, "To")[0].firstChild.data.strip())
env.setEPR(dom.getElementsByTagNameNS(NS_WSA, "Address")[0].firstChild.data.strip())
return env
except Exception:
env = None
return None