o
    #Îjþ  ã                   @   sh   d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ G d	d
„ d
eƒZdS )zA
This module provides a general response class for BCE services.
é    N)Ú	iteritems)Ústr)Úbytes)Úutils)Úcompat)Úhttp_headersc                   @   sT   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
edd„ ƒZdS )ÚBceResponsez

    c                 C   s   t  ¡ | _d S ©N)r   ZExpandoÚmetadata©Úself© r   úV/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/baidubce/bce_response.pyÚ__init__   s   zBceResponse.__init__c                 C   s†   t |ƒD ]<\}}| t tj¡¡rd|tt tj¡ƒd…  }t | 	dd¡¡}| 
¡ t tj 
¡ ¡kr9| d¡}t| j||ƒ qdS )ú3

        :param headers:
        :return:
        Zbce_Nú-Ú_ú")r   Ú
startswithr   Úconvert_to_stringr   Z
BCE_PREFIXÚlenr   Zpythonize_nameÚreplaceÚlowerÚETAGÚstripÚsetattrr
   ©r   ÚheadersÚkÚvr   r   r   Úset_metadata_from_headers!   s   
úz%BceResponse.set_metadata_from_headersc                 C   sF   t |ƒD ]\}}| ¡ t tj ¡ ¡kr| d¡}t| j||ƒ qdS )r   r   N)	r   r   r   r   r   r   r   r   r
   r   r   r   r   Ú'set_metadata_from_headers_no_underlined/   s
   
ýz3BceResponse.set_metadata_from_headers_no_underlinedc                 C   s   |  d¡rt‚d S )NÚ__)r   ÚAttributeError)r   Úitemr   r   r   Ú__getattr__:   s   
zBceResponse.__getattr__c                 C   s
   t  | ¡S r	   )r   Zprint_objectr   r   r   r   Ú__repr__?   s   
zBceResponse.__repr__c                 C   s0   t ƒ }|  | j¡|d< | j|d< |  ¡ |d< |S )z 

        :return: dict
        r   Z
statusCodeÚbody)ÚdictÚ_to_dictr
   Ústatus_codeÚget_body_map)r   Úresultr   r   r   Úto_mapB   s
   
zBceResponse.to_mapc              	   C   s^   | j }|si S zt|tƒr|W S t|tƒr| ¡ }t |¡W S  tjtfy.   d|i Y S w )zM
        Deserialize self.raw_data JSON string into a Python object.
        Úraw_content)	Úraw_dataÚ
isinstancer(   r   r   ÚjsonÚloadsÚJSONDecodeErrorÚ	TypeError)r   Úcontentr   r   r   r+   M   s   

ÿzBceResponse.get_body_mapc                 C   s\   t | tttfƒrdd„ | D ƒS t | tƒrdd„ |  ¡ D ƒS t| dƒr,dd„ | j ¡ D ƒS | S )z?
        Recursively convert an object to a dictionary
        c                 S   s   g | ]}t  |¡‘qS r   ©r   r)   )Ú.0Úir   r   r   Ú
<listcomp>c   s    z(BceResponse._to_dict.<locals>.<listcomp>c                 S   s   i | ]
\}}|t  |¡“qS r   r6   ©r7   r   r   r   r   r   Ú
<dictcomp>e   s    z(BceResponse._to_dict.<locals>.<dictcomp>Ú__dict__c                 S   s&   i | ]\}}|  d ¡s|t |¡“qS )r   )r   r   r)   r:   r   r   r   r;   g   s   & )r0   ÚlistÚtupleÚsetr(   ÚitemsÚhasattrr<   )Úobjr   r   r   r)   ]   s   

zBceResponse._to_dictN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r!   r%   r&   r-   r+   Ústaticmethodr)   r   r   r   r   r      s    r   )rF   r1   Zfuture.utilsr   Úbuiltinsr   r   Zbaidubcer   r   Zbaidubce.httpr   Úobjectr   r   r   r   r   Ú<module>   s   