o
    ̿SiP                     @   s  d Z ddlmZmZmZmZ ddlmZmZ ddl	Z	ddl
m
Z
 ddlmZ ddlmZ e Ze	eZejdd	d
edeejeefdeeef fddZejddd
edeejfdeeef fddZejddd
edeejfdeeef fddZdS )zZZerodha hooks/callback routes for platform teGPT.

NOTE: Move-only split from `teGPT.py`.
    )	APIRouterDependsHTTPExceptionBody)DictAnyN)datetime)database)get_current_userdetailsz	/callbackzZerodha OAuth callback)summary.payloadc           
   
      s   zS|  d}t| d}|stddd|d d|i}|s'tdd	dd
dlm} ||d |d }||}|d d|id|d t	 ddi dddW S  ty\     t
yt }	 ztd tdt|	dd}	~	ww )zHandle Zerodha OAuth callbackrequest_token_idi  zMissing request tokenstatus_codedetailzerodha_settingsuser_idi  zZerodha settings not foundr   )ZerodhaClientapi_key
api_secret$setaccess_tokenactive)r   
login_timestatus	connectedz!Zerodha authentication successful)r   messagezOAuth callback failed  N)getstrr   find_oneapp.v1.services.zerodha.clientr   generate_session
update_oner   utcnow	Exceptionlogger	exception)
r   dbcurrent_userr   r   settingsr   clientsessione r/   A/var/www/html/Trade-python/app/v1/routers/platform/teGPT_hooks.pyoauth_callback   s8   

	
r1   z	/postbackzZerodha postback handlerc              
         z8d| t  d}|d | | d}|r5|d d|id| d| d	d
| dt  di ddiW S  tyR } ztd tdt	|dd}~ww )z%Handle Zerodha postback notificationszerodhasourcer   received_atzerodha_postbacksorder_idorderszerodha_order_idr   r   filled_quantityr   average_pricer   r;   r<   
updated_atreceivedzPostback processing failedr   r   N
r   r%   
insert_oner   r$   r&   r'   r(   r   r    )r   r)   postback_docr8   r.   r/   r/   r0   zerodha_postback:   0   




rC   z/webhook/zerodhazZerodha order update webhookc              
      r2   )z$Handle Zerodha order update webhooksr3   r4   webhooksr8   r9   r:   r   r   r;   r   r<   r=   r?   zWebhook processing failedr   r   Nr@   )r   r)   webhook_docr8   r.   r/   r/   r0   zerodha_webhook_   rD   rG   )__doc__fastapir   r   r   r   typingr   r   loggingr   app.dbr	   app.v1.dependencies.authr
   router	getLogger__name__r'   postget_mongo_dbr    r1   rC   rG   r/   r/   r/   r0   <module>   s8    

'
$
