U
    Qh                     @   s^   d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlZeej	j
 G dd deZdS )    N)Request)
gn_dare_sp)datetimec                       s\   e Zd Zed fddZdddZdd Zd	d
 Zdd Zdd Z	dd Z
dd Z  ZS )dare_sp)argvc                    s   d | _ d| _d| _d| _i | _| | |   | d}| j	ddkrNdnd}| j
|d	}t|	d
i dd| id| _tt| | td d S )NFr   Zapp_genericapiKeyZambienteHhomolog )environmentbase_urlzapi-key)r   ZparamsZverifyZheadersZFim)ZresponseZdboutput_countsuffixunparsed_dataZsetupZrote_handlerZget_token_dataZenvironment_configgetget_url_environmentr   Zdare_sp_requestsuperr   __init__print)selfr   r   r   Zurls	__class__ :/home/www/html/webservice/gn_integracao/dare_sp/dare_sp.pyr      s(    

 	zdare_sp.__init__r	   c                 C   s(   | }|dkrd}nd}dd| diS )Nr	   z-hmlr
   r   zhttps://apigatewayz.fazenda.sp.gov.br/dare-icms/r   )r   r   baser   r   r   r   -   s     
zdare_sp.get_url_environmentc                 C   sJ   |   }|dD ]2}|| _| jd}| ||}|| _| | qd S )NCrequest)Ztxt_to_dictr   r   ZatualWsparserZdados_requisicaoZhandle_send)r   datar   Zrequest_structureZdata_parsedr   r   r   'post_route_handler_dare_unitario_emitirJ   s    z/dare_sp.post_route_handler_dare_unitario_emitirc           	   	   C   s<  d}| j jjr| j j }|di dddkrt|di ddg}t|tr^d|}nt|}d| d	 }n|di ddr| 	|}|d
|d|d|d|d|d|d| j
d d g}d}| |d| j
d d  |d	|d	 7 }nd| j jj d	 }| jdkr dnd}| j|| j|dd d S )Nr
   ZerroZestaOkF	mensagenszErro desconhecidoz, zER||ZcodigoBarra44ZcodigoBarra48Z
observacaoZpixCopiaColaZvalorZ
valorMultaZ
valorTotalpath	saida_pdfzOK||ZdocumentoImpressaor   zw+za+z
iso-8859-1)flagencoding)Zapi_requestZreqokjsonr   
isinstancelistjoinstrcreate_getterZ	rote_database64_para_pdftextr   
write_fileZsaida_cobol)	r   r   Zretorno_cobolZ	dare_jsonr    Zmensagens_textoZdare_getZretornor$   r   r   r   "handle_output_dare_unitario_emitirU   s4    


z*dare_sp.handle_output_dare_unitario_emitirc                    s   d fdd	}|S )uT    
        Cria uma função getter personalizada para um objeto específico
        Nc              
      sP   z,|  d} }|D ]}|| }q|W S  tttfk
rJ   | Y S X d S )N.)splittreat_valueKeyError	TypeErrorAttributeError)r"   defaultkeysZcurrentkeyobjr   r   r   r      s    

z"dare_sp.create_getter.<locals>.get)Nr   )r   r;   r   r   r:   r   r,   }   s    zdare_sp.create_getterc                 C   s   t |tr|rdS dS |d kr"dS |dkr<t |ttfs<dS |dkrVt |ttfsVdS |dkrbdS |dkrndS t |ttfrt|S t |tr|S t |ttfr|r|S dS t|S d S )NSNr
   FTFalseTrue)r(   boolintfloatr+   r)   tuple)r   valuer   r   r   r3      s&    

zdare_sp.treat_valuec                 C   s   |dkrdS |dkrdS d S )Nr<   Tr=   Fr   )r   rD   r"   r   r   r   
to_boolean   s    zdare_sp.to_booleanc              
   C   s   dd l }dd l}zV|dr*|dd }||}t|d}|| W 5 Q R X td|  |W S  |jj	k
r   t
dY n4 tk
r } ztdt| W 5 d }~X Y nX d S )	Nr   zdata:,   wbzPDF salvo com sucesso em: u   String base64 inválidazErro ao salvar o arquivo: )base64os
startswithr2   Z	b64decodeopenwriter   ZbinasciiError
ValueError	ExceptionOSErrorr+   )r   Zbase64_stringr#   rI   rJ   Zpdf_dataZarquivo_pdfer   r   r   r-      s    

zdare_sp.base64_para_pdf)r	   )__name__
__module____qualname__r)   r   r   r   r0   r,   r3   rE   r-   __classcell__r   r   r   r   r      s   
(r   )timeZgeneric.gn_requestr   Zgeneric.gn_dare_spr   r   r'   Zurllib3Zdisable_warnings
exceptionsZInsecureRequestWarningr   r   r   r   r   <module>   s   