관리-도구
편집 파일: 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<