U
    H4f                     @   sl   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 eejdejidZG d	d
 d
eZdS )    N)etree)ElementMaker)ns)Plugin)get_or_create_headerwsa)	namespacensmapc                   @   s.   e Zd ZdejiZdedddZdd ZdS )	WsAddressingPluginr   Naddress_urlc                 C   s
   || _ d S )Nr   )selfr    r   ,/tmp/pip-unpacked-wheel-04z2hmy8/zeep/wsa.py__init__   s    zWsAddressingPlugin.__init__c                 C   s   |j j}|s|j}t|}t|tdtt	  t
| jpF|d g}|| tjdd dkr~tj||j| jd n
t| ||fS )z6Apply the ws-addressing headers to the given envelope.z	urn:uuid:addressN   )      )Zkeep_ns_prefixesZ	top_nsmap)Zabstract
wsa_actionZ
soapactionr   WSAActionZ	MessageIDstruuidZuuid4Tor   extendr   ZLXML_VERSIONZcleanup_namespacesr	   )r   ZenvelopeZhttp_headers	operationZbinding_optionsr   headerheadersr   r   r   egress   s"    
  
zWsAddressingPlugin.egress)N)	__name__
__module____qualname__r   r   r	   r   r   r   r   r   r   r   r
      s   
r
   )r   lxmlr   Zlxml.builderr   Zzeepr   Zzeep.pluginsr   Zzeep.wsdl.utilsr   r   r
   r   r   r   r   <module>   s   