o nnh@srddlmZddlZddlZddlZddlmZddlmZddl m Z m Z ddl m Z e ZGdddeZdS) ) annotationsN)to_text)ConnectionError) binary_type text_type)Displayc@speZdZeZddZddZddZddd Zdd d Z dd d Z dddZ dddZ dddZ dddZdS) JsonRpcServerc Cstt|dd}|d}|ds|dr!|}t|S|d\}}t|d|dd}|jD] }t ||d}|rBnq6|sO| }t|}nz ||i|} Wnct y} z0t tz |j| jt| d }Wnty|jt| d }Ynwt|}WYd} ~ nmd} ~ wty} zt t|jt| ddd }t|}WYd} ~ nFd} ~ wwt| trd | vr| }n|| }zt|}Wn(ty} zt t|jt| ddd }t|}WYd} ~ nd} ~ wwt|d|S) Nsurrogate_then_replace)errorsmethodzrpc._params _identifieridcodemessage)datajsonrpc)jsonloadsrget startswithinvalid_requestdumpssetattr_objectsgetattrmethod_not_foundrdisplayvvv traceback format_excerrorrAttributeErrorinternal_error Exception isinstancedictresponsedelattr) selfrequestr r#argskwargs rpc_methodobjr)resultexcr3@/usr/local/lib/python3.10/dist-packages/ansible/utils/jsonrpc.pyhandle_requests\        zJsonRpcServer.handle_requestcCs|j|dSN)radd)r+r0r3r3r4registerJszJsonRpcServer.registercCs d|jdS)Nz2.0)rr)r)r+r3r3r4headerMs zJsonRpcServer.headerNcCsJ|}t|tr t|}t|tsd|d<ttj|dd}||d<|S)Npickle result_typer)protocolr1)r9r'rrrr:r)r+r1r)r3r3r4r)Ps  zJsonRpcServer.responsecCs*|}||d}|r||d<||d<|S)Nrrr#)r9)r+rrrr)r#r3r3r4r#Zs  zJsonRpcServer.errorcC|dd|S)NiDz Parse errorr#r+rr3r3r4 parse_errorczJsonRpcServer.parse_errorcCr=)NizMethod not foundr>r?r3r3r4rfrAzJsonRpcServer.method_not_foundcCr=)NizInvalid requestr>r?r3r3r4rirAzJsonRpcServer.invalid_requestcCr=)NizInvalid paramsr>r?r3r3r4invalid_paramslrAzJsonRpcServer.invalid_paramscCr=)NizInternal errorr>r?r3r3r4r%orAzJsonRpcServer.internal_errorr6)__name__ __module__ __qualname__setrr5r8r9r)r#r@rrrBr%r3r3r3r4rs4    r) __future__rrr:r!+ansible.module_utils.common.text.convertersransible.module_utils.connectionransible.module_utils.sixrransible.utils.displayrrobjectrr3r3r3r4s