U
    Ve"                     @   sR   d dl mZ d dlmZ d dlmZ d dlZG dd deeZG dd deZdS )	    )gn_api)gn_json)	FormatterNc                       sr   e Zd Zed fddZdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Z  ZS )
simple_api)argvc                    s   t t|   d S )N)superr   __init__)selfr   	__class__ @/home/www/html/webservice/gn_integracao/generic/gn_simple_api.pyr   	   s    zsimple_api.__init__c                 C   sV   || _ | | |  }d| }| j||| jddd}| |}i | _ | |S )z Metodo para manipular o envio ZbeforeSend_Zneed_beforeSendF)Zis_required)Zcurrent_dataprepare_send
fixed_rotecallatualWsgetsendhandle_response)r	   dataZ	func_rotefuncZ
beforeSendresponser   r   r   handle_send   s    


zsimple_api.handle_sendc                 C   sn   | j  | _| jd | _d| jkrjd| jkrjt }|j| jf| jdi | _| j	drj| jdd | _dS )z& Metodo que prepara os dados de envio rote{}path/N)
methoduppercurrent_methodr   current_roteNoneAsEmptyFormatterformat	rote_datar   endswith)r	   r   fmtr   r   r   r       s    zsimple_api.prepare_sendc                 C   sj   d| j kr| j d dkrd S d}| jd dkr<t|}d}d| jd| j||i}td	|  | jf |S )
Nr   Fjsonraw_typetextr   r   r   z:params |> )r   configr(   dumpsr"   r!   printZ
throttling)r	   r   r)   paramsr   r   r   r   -   s    
   zsimple_api.sendc                 C   s:   |  |}| jdi }|di }| ||}| |S )Nr   template)ZtryJsonr   r   generate_valueshandle_output)r	   r   Zreponse_dataZresponse_mapZresponse_templater   r   r   r   r   D   s
    
zsimple_api.handle_responsec                 C   s   |   }| d| |S )NZhandle_output_)r   r   )r	   r   r   r   r   r   r1   N   s    zsimple_api.handle_outputc                 C   s>   t  }|D ].}| ||}t|tr,|s,d}|||d < q
|S )Nr   to)dicthandleField
isinstancebool)r	   fieldsr   valuesfieldZ	new_valuer   r   r   r0   T   s    zsimple_api.generate_valuesc           	         s  d}|_ d|kr2|d |}|d dkr2|}d|kr||di  t|tr^ |gS t|tr| fdd|D S d|kr|di }||S d|kr|s|d }d	|krʈ|d	 ||}d
|kr|d
 ||}d|kr&|}|d  dj	  }|||}|d kr&|}d|krDj
||d dd}d|kr^||d }d|kr|d }t|tr|n|d }t|dd| |S )NFfromrootlistc                    s   g | ]}  |qS r   )r0   ).0vZ
field_listr	   r   r   
<listcomp>q   s     z*simple_api.handleField.<locals>.<listcomp>r7   defaultZcustom_translateZtranslate_by_itemZtranslate_by_branch_	translateT)idtablereverseZtranslate_by_type
globalThisZintegrationr   )Z	item_dataZjsonValueByPathr   r5   r3   r0   r<   r   Z	nmlkgrupolowerrC   ZtranslateByTypestrsetattrreplace)	r	   itemr   valueZfield_childZcurrentValueZ	func_namerG   attrr   r?   r   r4   _   sH    






zsimple_api.handleFieldc                 C   s$  | j d}|d}| |}|d}|d }|dd  }i }i }|d}	|	D ]8}
|
d\}}}}}|dkrvqT||||d	kd
||< qTd}|D ]}|d}i }t|D ]^\}}|	| }|dkr|}||krg ||< q|dd }|| }|d| j|f|i||< q|| | q|S )Nfilesentrada
r      ;|ZFGCUDS)tipoZtamanhovariacaoZnot_nulo valor)r%   r   readFilesplit	enumerate_simple_api__tratar_valorappend)r	   rO   rP   txtZlinhas_arquivoZ	cabecalhoZcorpoZ	estruturaZmapa_operacoesZpropiedades_colunaZ
propiedadeZestrutura_nomeZestrutura_tipoZestrutura_tamanhoZestrutura_variacaoZestrutura_is_not_nullZdef_ZlinhaZlinha_dadosZmapa_estruturaindexrY   Zhed_Zestrutura_atualr   r   r   txt_to_dict   sJ    




 zsimple_api.txt_to_dictc              
   K   sH  | d}| d}zt|dkrd|kr8t|}nd|krJt|}nd|kr\t|}nd|krt|rd|dd	 |d	d
 |d
d |dd |dd |dd nd }nfd|krt|rd|dd	 |d	d
 |d
d  nd }n*d|kr| |}n| }|dd}W n   d}Y nX |sD|dkrDd }|S )NrV   rW   r   INTDOUBLEZDECIMALDATETIMEz{0}-{1}-{2} {3}:{4}:{5}         
         DATEz{0}-{1}-{2}I   §rQ   rX   )rb   rc   rd   rk   )r   lenintfloatr$   _simple_api__img_encode64striprK   )r	   rY   kwargsrV   rW   r   r   r   Z__tratar_valor   s.    




R4

zsimple_api.__tratar_valorc           	      C   s`   dd l }dd l}|j|\}}| j|dd d\}}|dd}||d}d| d| S )	Nr   rb)r   flagencoding.rX   utf8zdata:image/z;base64,)base64Zos.pathr   splitextrZ   rK   	b64encodedecode)	r	   rM   ry   osfilenameZfile_extensionZsucessoZimage	extensionr   r   r   Z__img_encode64   s    zsimple_api.__img_encode64)__name__
__module____qualname__r<   r   r   r   r   r   r1   r0   r4   ra   r]   rq   __classcell__r   r   r
   r   r      s   
>8r   c                       s   e Zd Z fddZ  ZS )r#   c                    s    t  |||}|d krdS |S )NrX   )r   	get_value)r	   keyargsrs   r>   r
   r   r   r      s    zNoneAsEmptyFormatter.get_value)r   r   r   r   r   r   r   r
   r   r#      s   r#   )	Zgeneric.gn_apir   Zgeneric.gn_jsonr   stringr   r(   r   r#   r   r   r   r   <module>   s    x