File: //usr/lib/python3.9/site-packages/ansible/utils/__pycache__/jsonrpc.cpython-39.pyc
a
�)g� � @ s~ d dl mZmZmZ eZd dlZd dlZd dlZd dl m
Z
d dlmZ d dl
mZmZ d dlmZ e� ZG dd� de�ZdS ) � )�absolute_import�division�print_functionN)�to_text)�ConnectionError)�binary_type� text_type)�Displayc @ sp e Zd Ze� Zdd� Zdd� Zdd� Zddd �Zdd
d�Z ddd
�Z
ddd�Zddd�Zddd�Z
ddd�ZdS )�
JsonRpcServerc C s t �t|dd��}|�d�}|�d�s0|�d�rB| �� }t �|�S |�d�\}}t| d|�d�� d }| jD ]}t ||d �}|rl q�ql|s�| �
� }t �|�}�nhz||i |��} W n� t�y. }
zbt�
t�� � z| j|
jt|
�d �}W n$ t�y | jt|
�d
�}Y n0 t �|�}W Y d }
~
n�d }
~
0 t�y~ }
z8t�
t�� � | jt|
dd�d
�}t �|�}W Y d }
~
n�d }
~
0 0 t| t��r�d| v �r�| }n
| �| �}zt �|�}W nR t�y }
z8t�
t�� � | jt|
dd�d
�}t �|�}W Y d }
~
n
d }
~
0 0 t| d� |S )NZsurrogate_then_replace)�errors�methodzrpc.�_�params�_identifier�id��code�message)�data�jsonrpc)�json�loadsr �get�
startswith�invalid_request�dumps�setattr�_objects�getattr�method_not_foundr �displayZvvv� traceback�
format_exc�errorr �AttributeError�internal_error� Exception�
isinstance�dict�response�delattr)�selfZrequestr r# �args�kwargsZ
rpc_method�objr) �result�exc� r1 �9/usr/lib/python3.9/site-packages/ansible/utils/jsonrpc.py�handle_request sN
zJsonRpcServer.handle_requestc C s | j �|� d S )N)r �add)r+ r. r1 r1 r2 �registerK s zJsonRpcServer.registerc C s d| j d�S )Nz2.0)r r )r )r+ r1 r1 r2 �headerN s zJsonRpcServer.headerNc C sJ | � � }t|t�rt|�}t|t�s>d|d<