a )g@s~ddlmZmZmZeZddlZddlZddlZddl m Z ddl m Z ddl mZmZddlmZeZGdddeZdS) )absolute_importdivisionprint_functionN)to_text)ConnectionError) binary_type text_type)Displayc@speZdZeZddZddZddZddd Zdd d Z dd d Z dddZ dddZ dddZ dddZdS) JsonRpcServerc Cstt|dd}|d}|ds0|drB|}t|S|d\}}t|d|dd}|jD]}t ||d}|rlqql|s| }t|}nhz||i|} Wnt y.} zbt tz|j| jt| d }Wn$ty|jt| d }Yn0t|}WYd} ~ nd} ~ 0ty~} z8t t|jt| ddd }t|}WYd} ~ nd} ~ 00t| trd | vr| }n || }zt|}WnRty} z8t t|jt| ddd }t|}WYd} ~ n d} ~ 00t|d|S) NZsurrogate_then_replace)errorsmethodzrpc._params _identifieridcodemessage)datajsonrpc)jsonloadsrget startswithinvalid_requestdumpssetattr_objectsgetattrmethod_not_foundrdisplayZvvv traceback format_excerrorrAttributeErrorinternal_error Exception isinstancedictresponsedelattr) selfZrequestr r#argskwargsZ rpc_methodobjr)resultexcr19/usr/lib/python3.9/site-packages/ansible/utils/jsonrpc.pyhandle_requestsN        zJsonRpcServer.handle_requestcCs|j|dS)N)radd)r+r.r1r1r2registerKszJsonRpcServer.registercCs d|jdS)Nz2.0)rr)r)r+r1r1r2headerNszJsonRpcServer.headerNcCsJ|}t|trt|}t|ts>d|d<ttj|dd}||d<|S)NpickleZ result_typer)Zprotocolr/)r6r'rrrr7r)r+r/r)r1r1r2r)Qs  zJsonRpcServer.responsecCs*|}||d}|r||d<||d<|S)Nrrr#)r6)r+rrrr)r#r1r1r2r#[s  zJsonRpcServer.errorcCs|dd|S)NiDz Parse errorr#r+rr1r1r2 parse_errordszJsonRpcServer.parse_errorcCs|dd|S)NizMethod not foundr8r9r1r1r2rgszJsonRpcServer.method_not_foundcCs|dd|S)NizInvalid requestr8r9r1r1r2rjszJsonRpcServer.invalid_requestcCs|dd|S)NizInvalid paramsr8r9r1r1r2invalid_paramsmszJsonRpcServer.invalid_paramscCs|dd|S)NizInternal errorr8r9r1r1r2r%pszJsonRpcServer.internal_error)N)N)N)N)N)N)N)__name__ __module__ __qualname__setrr3r5r6r)r#r:rrr;r%r1r1r1r2r s4    r )Z __future__rrrtypeZ __metaclass__rr7r!Zansible.module_utils._textrZansible.module_utils.connectionrZansible.module_utils.sixrrZansible.utils.displayr r objectr r1r1r1r2s