
    ,i.              
          d dl Z d dlZd dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZ d d	lmZ  ed
dg      Z G d de
      Z G d de
      Z G d de
      ZdefdZej7                  ded       ee       ee      fdededefd       Zej;                  dee          ee       ee      fdedefd       Zej;                  de       ee       ee      fdededefd        Z ejC                  de       ee       ee      fdedededefd!       Z"ejG                  d       ee       ee      fdededefd"       Z$y)#    N)datetime)	APIRouterDependsHTTPException)Session)	BaseModel)ListOptional)get_db)WebhookUser)get_current_userz	/webhookswebhooks)prefixtagsc                   @    e Zd ZU eed<   g Zee   ed<   dZee   ed<   y)WebhookCreateurleventsNsecret)	__name__
__module____qualname__str__annotations__r   r	   r   r
        */var/www/notifications/app/api/webhooks.pyr   r      s#    	HFDI FHSM r   r   c                   P    e Zd ZU dZee   ed<   dZeee      ed<   dZ	ee
   ed<   y)WebhookUpdateNr   r   	is_active)r   r   r   r   r
   r   r   r   r	   r!   boolr   r   r   r    r       s1    C#"&FHT#Y& $Ix~$r   r    c                       e Zd ZU eed<   eed<   ee   ed<   eed<   eed<   eed<   dZ	e
e   ed<   d	Zeed
<   d	Zeed<    G d d      Zy)
WebhookOutidr   r   r   r!   
created_atNlast_triggeredr   success_countfailure_countc                       e Zd ZdZy)WebhookOut.ConfigTN)r   r   r   from_attributesr   r   r   Configr+   (   s    r   r-   )r   r   r   intr   r   r	   r"   r   r'   r
   r(   r)   r-   r   r   r   r$   r$      sS    G	HIKO)-NHX&-M3M3 r   r$   returnc                  R    t        j                  d      } d| j                          S )u4   Генерировать секрет для webhook    whsec_)secretstoken_byteshex)random_bytess    r   generate_webhook_secretr7   ,   s)    &&r*LL$$&'((r       )response_modelstatus_codedatacurrent_userdbc                   K   	 | j                   r| j                   j                  d      st        dd      | j                  xs
 t	               }t        |j                  | j                   | j                  r| j                  ng |d      }|j                  |       |j                          |j                  |       t        |j                  |j                   |j                  xs g |j                  |j                  |j                  |j                  |j                   xs d|j"                  xs d	      S # t        $ r  t$        $ r.}|j'                          t        d	d
t)        |             d}~ww xY ww)u!   Создать новый webhook)zhttp://zhttps://i  u@   URL должен начинаться с http:// или https://r;   detailT)	tenant_idr   r   r   r!   r   	r%   r   r   r   r!   r&   r'   r(   r)   i  u'   Ошибка создания webhook: N)r   
startswithr   r   r7   r   rB   r   addcommitrefreshr$   r%   r!   r&   r'   r(   r)   	Exceptionrollbackr   )r<   r=   r>   r   
db_webhookes         r   create_webhookrL   2   sK    )
xxtxx223JKY  9 7 9 ",,"&++4;;2

 	z
		


:}}$$*$$ **!,,%44$227a$227a

 
	
   

<SVHE
 	

s)   E;D3D8 7E;8E8
)E33E88E;)r:   c                   K   |j                  t              j                  t        j                  | j                  k(        j	                         }g }|D ]  }|j                  t        |j                  |j                  |j                  xs g |j                  |j                  |j                  |j                  |j                  xs d|j                  xs d	              |S w)u&   Получить список webhooksr   rC   )queryr   filterrB   allappendr$   r%   r   r   r   r!   r&   r'   r(   r)   )r=   r>   r   resultwebhooks        r   list_webhooksrT   e   s      xx ''\333	ce  F jzz>>'R>>''))"11!//41!//41

 
	 Ms   C"C$z/{webhook_id}
webhook_idc                   K   |j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j                         }|st        dd      t        |j                  |j                  |j                  xs g |j                  |j                  |j                  |j                  |j                  xs d|j                  xs d	      S w)u    Получить webhook по ID     Webhook не найденr@   r   rC   )rN   r   rO   r%   rB   firstr   r$   r   r   r   r!   r&   r'   r(   r)   rU   r=   r>   rS   s       r   get_webhookr[      s      hhw&&

j \333 eg 
 4OPP::KK~~#~~##%%--++0q++0q
 
s   C)C+c                   K   |j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j                         }|st        dd      |j                  |j                  |_        |j                  |j                  |_        |j                  |j                  |_	        |j                          |j                  |       t        |j                  |j                  |j                  xs g |j                  |j                  |j                  |j                  |j                   xs d|j"                  xs d	      S w)u   Обновить webhookrW   rX   r@   r   rC   )rN   r   rO   r%   rB   rY   r   r   r   r!   rF   rG   r$   r   r&   r'   r(   r)   )rU   r<   r=   r>   rS   s        r   update_webhookr]      s     hhw&&

j \333 eg 
 4OPPxxhh{{~~! NNIIKJJw::KK~~#~~##%%--++0q++0q
 
s   E!E#c                 2  K   |j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j                         }|st        dd      |j                  |       |j                          dddS w)u   Удалить webhookrW   rX   r@   Tu   Webhook удален)okmessage)	rN   r   rO   r%   rB   rY   r   deleterF   rZ   s       r   delete_webhookrb      s      hhw&&

j \333 eg 
 4OPPIIgIIK#9::s   BB)%r3   hashlibr   fastapir   r   r   sqlalchemy.ormr   pydanticr   typingr	   r
   app.db.sessionr   app.db.modelsr   r   app.api.depsr   routerr   r    r$   r   r7   postrL   getrT   r.   r[   putr]   ra   rb   r   r   r   <module>ro      s      5 5 "  ! ! ' ) 
+ZL	9!I !%I % ) ) R
< !!12&//

/
/
 	/
 =/
d BtJ/0 !12&/ 16 OJ7 !!12&/ 	 88 OJ7 !!12&/	$$
$ $ 		$ 8$N  !!12&/;;; 	;  ;r   