Exemplo n.º 1
0
    def asEtreeSubNode(self, rootNode):
        # To (OPTIONAL), defaults to anonymous
        node = etree_.SubElement(rootNode,
                                 wsaTag('To'),
                                 attrib={s12Tag('mustUnderstand'): 'true'})
        node.text = self.to or WSA_ANONYMOUS
        #From
        if self.from_:
            self.from_.asEtreeSubNode(rootNode)
        # ReplyTo (OPTIONAL), defaults to anonymous
        if self.replyTo:
            self.replyTo.asEtreeSubNode(rootNode)
        # FaultTo (OPTIONAL)
        if self.faultTo:
            self.faultTo.asEtreeSubNode(rootNode)
        # Action (REQUIRED)
        node = etree_.SubElement(rootNode,
                                 wsaTag('Action'),
                                 attrib={s12Tag('mustUnderstand'): 'true'})
        node.text = self.action
        # MessageID (OPTIONAL)
        if self.messageId:
            node = etree_.SubElement(rootNode, wsaTag('MessageID'))
            node.text = self.messageId
        # RelatesTo (OPTIONAL)
        if self.relatesTo:
            node = etree_.SubElement(rootNode, wsaTag('RelatesTo'))
            node.text = self.relatesTo
            if self.relationshipType is not None:
                node.set('RelationshipType', self.relationshipType)

        if self.referenceParametersNode:
            rootNode.append(copy.copy(self.referenceParametersNode))
Exemplo n.º 2
0
    def asEtreeSubNode(self, rootNode):
        _ns = Prefix.partialMap(Prefix.DPWS, Prefix.WSA)
        # reverse lookup( key is namespace, value is prefix)
        res = {}
        for k, v in _ns.items():
            res[v] = k
        for k, v in rootNode.nsmap.items():
            res[v] = k

        # must explicitely add namespaces of types to Host node, because list of qnames is not handled by lxml
        typesTexts = []
        if self.types:
            for qname in self.types:
                prefix = res.get(qname.namespace)
                if not prefix:
                    # create a random prefix
                    prefix = '_dpwsh{}'.format(len(_ns))
                    _ns[prefix] = qname.namespace
                typesTexts.append('{}:{}'.format(prefix, qname.localname))

        hostNode = etree_.SubElement(rootNode, dpwsTag('Host'))  #, nsmap=_ns)
        epRefNode = etree_.SubElement(
            hostNode, wsaTag('EndpointReference'))  #, nsmap=_ns)
        for epRef in self.endpointReferences:
            epRef.asEtreeSubNode(epRefNode)

        if typesTexts:
            typesNode = etree_.SubElement(
                hostNode, dpwsTag('Types'), nsmap=_ns
            )  # add also namespace prefixes that were locally generated
            typesText = ' '.join(typesTexts)
            typesNode.text = typesText
Exemplo n.º 3
0
 def asEtreeSubNode(self, rootNode):
     node = etree_.SubElement(rootNode, wsaTag('Address'))
     node.text = self.address
     if self.referenceParametersNode is not None:
         rootNode.append(copy.copy(self.referenceParametersNode))
     if self.metaDataNode is not None:
         rootNode.append(self.metaDataNode)
Exemplo n.º 4
0
 def __init__(self,
              address,
              referenceParametersNode=None,
              metaDataNode=None):
     self.address = address  # type="wsa:AttributedURI", which is an xs:anyURI element
     self.referenceParametersNode = None
     self.metaDataNode = None
     if referenceParametersNode is not None:
         if hasattr(referenceParametersNode,
                    'tag') and referenceParametersNode.tag == wsaTag(
                        'ReferenceParameters'):
             self.referenceParametersNode = referenceParametersNode  # any content allowed. optional
         else:
             self.referenceParametersNode = etree_.Element(
                 wsaTag('ReferenceParameters'))
             self.referenceParametersNode.extend(referenceParametersNode)
     if metaDataNode is not None:
         if hasattr(metaDataNode,
                    'tag') and metaDataNode.tag == wsaTag('MetaData'):
             self.metaDataNode = metaDataNode  # any content allowed. optional
         else:
             self.metaDataNode = etree_.Element(wsaTag('MetaData'))
             self.metaDataNode.extend(metaDataNode)
Exemplo n.º 5
0
 def asEtreeSubNode(self, rootNode):
     hostedNode = etree_.SubElement(rootNode, dpwsTag('Hosted'))
     epRefNode = etree_.SubElement(hostedNode, wsaTag('EndpointReference'))
     for epRef in self.endpointReferences:
         epRef.asEtreeSubNode(epRefNode)
     if self.types:
         typesText = ' '.join(
             [docNameFromQName(t, rootNode.nsmap) for t in self.types])
         typesNode = etree_.SubElement(hostedNode,
                                       dpwsTag('Types'))  #, nsmap=ns)
         typesNode.text = typesText
     serviceNode = etree_.SubElement(hostedNode,
                                     dpwsTag('ServiceId'))  #, nsmap=ns)
     serviceNode.text = self.serviceId