
    VhY.                         d dl mZmZmZ eZd dlmZ d dlm	Z	 	 d dl
ZdZd dlmZ  G d d	e      Z G d
 de      Z G d de      Z G d de      Zd ZdZdZdZdZdZddZd Zd Zd Z G d de      Z  G d de      Z!y# e$ r dZY lw xY w)    )absolute_importdivisionprint_function)	to_native)string_typesNTF)NetworkErrorc                       e Zd Zy)WSDLExceptionN__name__
__module____qualname__     k/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/dns/plugins/module_utils/wsdl.pyr
   r
          r   r
   c                       e Zd Zy)WSDLNetworkErrorNr   r   r   r   r   r      r   r   r   c                        e Zd Z fdZ xZS )	WSDLErrorc                 x    t         t        |   dj                  |||             || _        || _        || _        y )Nz{0} ({1}): {2})superr   __init__formaterror_origin
error_codeerror_message)selforiginr   message	__class__s       r   r   zWSDLError.__init__#   s:    i'(8(?(?
T[(\]"$$r   )r   r   r   r   __classcell__)r!   s   @r   r   r   "   s    % %r   r   c                       e Zd Zy)WSDLCodingExceptionNr   r   r   r   r$   r$   *   r   r   r$   c                     |j                  d      }|dk  r|d fS | j                  j                  |d |       }||dz   d  }||fS )N:r      )findnsmapget)nodetextinss       r   _split_text_namespacer/   .   sP    		#A1uTz	Ra	!BA<D8Or   z)http://schemas.xmlsoap.org/soap/envelope/z)http://www.w3.org/2001/XMLSchema-instancez http://www.w3.org/2001/XMLSchemazhttp://xml.apache.org/xml-soapz)http://schemas.xmlsoap.org/soap/encoding/c                     | t         j                  j                  ||      }| j                  t         j                  j                  t        d      j
                  |       y )Ntype)lxmletreeQNameset_NAMESPACE_XSIr,   )r+   
type_value	namespaces      r   	_set_typer9   >   sC    ZZ%%i<
HHTZZnf5::JGr   c                 ^   |?| j                  t        j                  j                  t        d      j
                  d       y t        |t              rt        | d       || _        y t        |t              rt        | d       t        |      | _        y t        |t              rt        | d       |rd| _        y d| _        y t        |t              rt        | dt               t        |j                               D ]  \  }}t        j                  j!                  d      }t        j                  j!                  d	      }t#        ||       |j%                  |       t        j                  j!                  d
      }t#        ||       |j%                  |       | j%                  |        y t        |t&              rPt        | d       |D ]>  }t        j                  j!                  d      }t#        ||       | j%                  |       @ y t)        dj+                  t-        |                  )Nniltruez
xsd:stringzxsd:intzxsd:booleanfalseMapitemkeyvaluezSOAP-ENC:ArrayzDo not know how to encode {0}!)r5   r2   r3   r4   r6   r,   
isinstancer   r9   intstrbooldict_NAMESPACE_XML_SOAPsorteditemsElementencode_wsdlappendlistr$   r   r1   )r+   rA   r@   valchildkeveelts           r   rK   rK   D   s   }!!.%8==vF	E<	($%		E3	$	"J		E4	 $&$V	'		E4	 $23u{{}- 	HCJJ&&v.E##E*BC LL##G,BC LLKK	 
E4	 $() 	CJJ&&v.Es#KK	
 ""B"I"I$u+"VWWr   c                     |D ]Q  }|j                   dk7  r$t        dj                  |j                               | j                  t	        |||             S y )Nr?   Invalid child tag "{0}" in map!)tagr$   r   rL   decode_wsdl)resultr+   root_nsidsr?   s        r   _decode_wsdl_arrayrZ   e   sM     788v%&G&N&Ntxx&XYYk$567r   c                 0   | j                  d      }| j                  t        j                  j                  t        d            }| j                  d      }|U|j                  d      st        dj                  |            |dd  }||vrt        dj                  |            ||   }n|dk(  rd }n| j                  t        j                  j                  t        d	            }|t        d
j                  |             t        | |      \  }}	|	t        dj                  |            |	t        k(  r|dk(  rJ| j                  dk(  rd}n>| j                  dk(  rd}n+t        dj                  | j                              |dk(  rt        | j                        }n|dk(  r| j                  }nt        dj                  |            |	t        k(  r|dk(  ri }||||<   | D ]  }
|
j                  dk7  r$t        dj                  |
j                              |
j                  d      }|t        dj                  |
            t        |||      }|
j                  d      }|t        dj                  |
            t        |||      }|||<    |S t        dj                  |            |	t         k(  r7|dk(  rg }||||<   t#        || ||       nt        dj                  |            |	|k(  rx| j                  t        j                  j                  t         d            }|g }||||<   t#        || ||       nFi }||||<   | D ]  }
t        |
||      ||
j                  <    nt        dj                  |	|            ||||<   |S )Nhrefr;   id#z%Global reference "{0}" not supported!r'   zID "{0}" not yet defined!r<   r1   z$Element "{0}" has no "xsi:type" tag!z Cannot find namespace for "{0}"!booleanTr=   Fz Invalid value for boolean: "{0}"rC   stringzUnknown XSD type "{0}"!r>   r?   rT   r@   zCannot find key for "{0}"!rA   zCannot find value for "{0}"!Array	arrayTypez/Unknown type namespace "{0}" (with type "{1}")!)r*   r2   r3   r4   r6   
startswithr$   r   r/   _NAMESPACE_XSDr,   rC   rG   rU   r(   rV   _NAMESPACE_XML_SOAP_ENCODINGrZ   )r+   rX   rY   r\   r;   nidrW   type_with_nsntyper.   r?   r@   rA   
array_types                 r   rV   rV   l   s   88FD
((4::##NE:
;C
((4.Cs#%&M&T&TUY&Z[[ABxs?%&A&H&H&NOOT	xx

 0 0 HI%&L&S&STX&YZZ)$=	r:%&H&O&OP\&]^^	!99&!FYY')"F-.P.W.WX\XaXa.bcc%TYY(")*C*J*J5*QRR&&~?%CH  (Dxx6)12S2Z2Z[_[c[c2dee))E*C{12N2U2UVZ2[\\%c7C8C IIg.E}12P2W2WX\2]^^'w<E"'F3K( %&?&F&Fu&MNN//?%CH"64#>)*C*J*J5*QRR7]$**"2"23OQ\"]^J%?%CH"64#>?%CH  GD'24#'FF488$G &&W&^&^_ach&ijj
CMr   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Parserc                 @   |D ]  }t         j                  j                  |j                        }|j                  | j
                  k7  rt        dj                  ||            |j                  d      D ]&  }t        || j
                  i       ||j                  <   (  y )Nz(Cannot interpret {0} item of type "{1}"!return)r2   r3   r4   rU   r8   _apir$   r   iterrV   	localname)r   rW   r+   whererO   rU   ress          r   _parsezParser._parse   s     	HE**""599-C}}		))*T*[*[\acf*ghhzz(+ H(3CB(Gs}}%H		Hr   c                 H   t         | _        || _        || _        | j                  j	                  t
        j                  j                  | j                  d      j                        D ]  }|j                  d      }d }|j                  d      }d}|F|j                  r:t        ||j                        \  }}	|}|	| j                  k(  r|j                         }|#|j                  rt        |||j                        t        ||t
        j                  j                  |      j                  d             i | _        i | _        | j                  j	                  t
        j                  j                  | j                  d      j                        D ]  }
| j#                  | j                  |
d       ! | j                  j	                  t
        j                  j                  | j                  d      j                        D ]  }| j#                  | j                   |d	       ! y )
NFault	faultcodefaultstringserverutf-8HeaderheaderBodybody)_NAMESPACE_ENVELOPE_main_nsrn   _rootro   r2   r3   r4   r,   r(   r/   lowerr   tostringdecode_header_bodyrs   )r   apirootfault
fault_codefault_code_valfault_stringr   codecode_nsr{   r}   s               r   r   zParser.__init__   s   +	
ZZ__TZZ%5%5dmmW%M%R%RS 	`EK0J!N ::m4LF%*// 5eZ__ Mg!%dmm+!ZZ\F'L,=,=8I8IJJFNDJJ4G4G4N4U4UV]4^__	` 
jjoodjj&6&6t}}h&O&T&TU 	8FKKfh7	8JJOODJJ$4$4T]]F$K$P$PQ 	2DKK

D&1	2r   c                      | j                   |   S N)r   )r   r{   s     r   
get_headerzParser.get_header   s    ||F##r   c                      | j                   |   S r   )r   )r   r}   s     r   
get_resultzParser.get_result   s    zz$r   c                 N    dj                  | j                  | j                        S )Nzheader={0}, body={1})r   r   r   r   s    r   __str__zParser.__str__   s    %,,T\\4::FFr   c                 |    dt         j                  j                  | j                  d      j	                  d      z   S Nz'<?xml version='1.0' encoding='utf-8'?>
T)pretty_printry   r2   r3   r   r   r   r   s    r   __repr__zParser.__repr__   C    BTZZEXEXY]YcYcrvEXEwE~E~  @G  FH  H  	Hr   N)	r   r   r   rs   r   r   r   r   r   r   r   r   rk   rk      s#    H20$ GHr   rk   c                   F    e Zd Zed	d       Zd Zd Zd	dZd Zd Z	d
dZ
y)ComposerNc                     |r>t        j                  j                  t         j                  j                  ||       fi |S t        j                  j                  | fi |S r   )r2   r3   rJ   r4   )rU   r8   kwargs      r   _createzComposer._create   sJ    ::%%djj&6&6y#&FP%PPzz!!#///r   c                 |    dt         j                  j                  | j                  d      j	                  d      z   S r   r   r   s    r   r   zComposer.__str__   r   r   c                 >     | j                   || j                  fi |S r   )r   r   )r   rU   r   s      r   _create_envelopezComposer._create_envelope   s    t||C8%88r   c                 Z   || _         t        | _        || _        t        t        t
        dt        d}||j                  |       | j                  d|      | _	        | j                  j                  t        j                  j                  | j                  d      j                  t               | j                  d      | _        | j                  j!                  | j                         | j                  d      | _        | j                  j!                  | j"                         d | _        y )Nauth)zSOAP-ENVxsdxsins2zSOAP-ENCEnvelope)r)   encodingStylerz   r|   )_http_helperr~   r   rn   rd   r6   re   updater   r   r5   r2   r3   r4   r,   r   rL   r   _command)r   http_helperr   
namespacesall_namespacess        r   r   zComposer.__init__   s    '+	 ,!!4
 !!!*-**:^*L


tzz''GLLNjk,,X6

$,,'**62


$**%r   c                    | j                  dd      }| j                  d      }||_        |j                  |       | j                  d      }||_        |j                  |       | j                  j                  |       y )Nauthenticater   UserNamePassword)r   r,   rL   r   )r   usernamepasswordr   userpws         r   add_authzComposer.add_auth  se    ||NF3||J'	D\\*%BD!r   c                    || _         | j                  || j                        }|j                         D ]3  \  }}| j                  |      }t	        ||       |j                  |       5 | j                  j                  |       y r   )r   r   rn   rI   rK   rL   r   )r   commandargsargrA   s        r   add_simple_commandzComposer.add_simple_command  sn    ,,w		2**, 	 JC,,s#CU#NN3	  	

'"r   c           
         dt         j                  j                  | j                        z   dz   }	 dt	        t        |            d}| j                  r)dj                  | j                  | j                        |d<   | j                  j                  | j                  |dd|	      \  }}|d
   }|dk  s|dk\  r_t        | j                  t         j                  j                  |             t!        dddj                  ||j#                  d                  t        | j                  t         j                  j                  |            S # t        $ r}t        t        |            d }~ww xY w)Ns'   <?xml version='1.0' encoding='utf-8'?>
   
ztext/xml; charset=utf-8)zContent-TypezContent-Lengthz	"{0}#{1}"
SOAPActionPOSTi,  )datamethodtimeoutheadersstatus   rx    z+Error {0} while executing WSDL command:
{1}ry   )r2   r3   r   r   rD   lenr   r   rn   r   	fetch_urlr   r   r   rk   
fromstringr   r   )r   debugpayloadr   rW   infor   es           r   executezComposer.execute!  s8   G$**J]J]^b^h^hJiilqq
	1 9"%c'l"3G }}(3(:(:499dmm(T%,,66tyywW]gjt{6|LFD>D
 #:499djj33F;<Hb*X*_*_`dflfsfst{f|*}~~dii!6!6v!>??  	1"9Q<00	1s   A>E 	E-E((E-r   )F)r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r      s4    0 0
H9,"#@r   r   r   )"
__future__r   r   r   r1   __metaclass__+ansible.module_utils.common.text.convertersr   ansible.module_utils.sixr   
lxml.etreer2   HAS_LXML_ETREEImportError;ansible_collections.community.dns.plugins.module_utils.httpr   	Exceptionr
   r   r   r$   r/   r~   r6   rd   rG   re   r9   rK   rZ   rV   objectrk   r   r   r   r   <module>r      s    A @  B 1N U	I 		} 	% %	- 	 B <36 J HXB7Nb+HV +H\H@v H@o  Ns   B BB