rinse.wsa

WSA (Addressing) support for rinse SOAP client.

rinse.wsa.append_wsa_headers(msg, to, action, message_id=None, relates_to=None, relationship_type=None, reply_to=None, from_endpoint=None, fault_to=None)[source]

Add WSA (addressing) headers.

>>> from rinse.wsa import append_wsa_headers
>>> import lxml.usedoctest
>>> from rinse.message import SoapMessage
>>> from rinse.util import printxml
>>> msg = SoapMessage()
>>> f123 = msg.elementmaker(
...     'f123',
...     'http://www.fabrikam123.example/svc53',
... )
>>> msg.body = f123.Delete(f123.maxCount('42'))
>>> append_wsa_headers(
...     msg,
...     'mailto:joe@fabrikam123.example',
...     'http://fabrikam123.example/mail/Delete',
...     message_id='uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff',
...     reply_to='http://business456.example/client1',
... )
>>> print(msg['SOAPAction'])
"http://fabrikam123.example/mail/Delete"
>>> printxml(msg.etree())
<soapenv:Envelope xmlns:f123="http://www.fabrikam123.example/svc53"
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:wsa="http://www.w3.org/2005/08/addressing">
  <soapenv:Header>
    <wsa:MessageID>uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff</wsa:MessageID>
    <wsa:To>mailto:joe@fabrikam123.example</wsa:To>
    <wsa:Action>http://fabrikam123.example/mail/Delete</wsa:Action>
    <wsa:ReplyTo>
      <wsa:Address>http://business456.example/client1</wsa:Address>
    </wsa:ReplyTo>
  </soapenv:Header>
  <soapenv:Body>
    <f123:Delete>
      <f123:maxCount>42</f123:maxCount>
    </f123:Delete>
  </soapenv:Body>
</soapenv:Envelope>