
    |j^                        d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	  ee
      ZddZddZej                  d      d        Zej!                  d	      d
        ZddZe
dk(  r e        yy)    )annotations)Flaskjsonifyrequest)config)handle_bitrix_eventc                    t         j                  j                  d      } t         j                  j                  d      }|r|S t        j                  d      xs i }|j                  d      xs i }t        |t              r|j                  d      rt        |d         S t         j                  j                  d      }|r|S | D ]@  }|j                  d      s|dk(  s| j                  |      xs g }|s2t        |d         c S  y	)
NF)flatauth[application_token]Tsilentauthapplication_tokenr    )
r   formto_dictgetget_json
isinstancedictstrargsendswith)bodytoken	json_bodyr   nestedkeyvaluess          3/var/www/abs-group.kazgame-control.su/app/server.py_extract_tokenr!      s    <<U+DLL67E   -3I== &BD$$((+>"?4+,--\\78F  &<<+,7J0JXXc](bF6!9~%	&     c                    t        j                  d      } t        | t              r| j	                  d      r| S t         j
                  j	                  d      }t         j
                  j	                  d      }t         j
                  j	                  d      }t         j
                  j	                  d      }|d||did	|id
S )NTr   eventzdata[FIELDS][ID]zdata[FIELDS][ENTITY_TYPE_ID]r   FIELDS)IDENTITY_TYPE_IDr   )r$   datar   )r   r   r   r   r   r   )r   r$   item_identity_type_idr   s        r    _payload_from_requestr+   &   s      -I)T"y}}W'= LLW%Ell12G\\%%&DENLL67E "0
 %e,	 	r"   z/healthc                     t        ddi      S )NokT)r    r"   r    healthr/   =   s    D$<  r"   z/actionc                    	 t               } | r| t        j                  k7  rt        d       t	        ddd      dfS t               }t        d|j                  d      xs d d	|j                  d
      xs i j                  di       j                  d      xs d d|j                  d
      xs i j                  di       j                  d      xs d        t        |      }|j                  d      dk(  r;t        d|j                  d              t	        dd|j                  d      d      S t        d|j                  d       d|j                  d              t	        d|j                  d      |j                  d      d      S # t        $ r1}t        d|        t	        dt        |      d      dfcY d }~S d }~ww xY w)Nz+Rejected /action: invalid application_tokenFzinvalid token)r-   errori  zIncoming event=r$   ?z id=r(   r%   r&   z entityTypeId=r'   statusignoredz	Ignored: reasonT)r-   r4   r5   zProcessed #bitrixIdz: action)r-   r6   r7   z/action failed: i  )
r!   r   outgoing_webhook_tokenprintr   r+   r   r   	Exceptionr   )r   payloadresultexcs       r    r7   r7   B   s   > !>!>>?@%/BCSHH'){{7#*s+ ,;;v&,"11(B?CCDIPSQ R$[[06B;;HbIMMN^_fcfgi	
 %W-::h9,Ifjj2345$46::hCWXYYFJJz232fjj6J5KLM"JJz2 **X.
 	
  > &'ec#h78#==>s*   9F C6F 3AF 	G	&G>G	G	c            	     n   t         j                  st        d      t        dt         j                          t        d       t        dt         j
                   ddj                  d t         j                  D                      t        d       t        j                  d	t         j                  
       y )Nz&Missing OUTGOING_WEBHOOK_TOKEN in .envzWebhook server listening on :zHandler URL path: POST /actionzTracked SPA entityTypeId=z, categories=,c              3  2   K   | ]  }t        |        y w)N)r   ).0xs     r    	<genexpr>zmain.<locals>.<genexpr>l   s     C!s1vCs   zcSubscribe outgoing webhook to ONCRMDYNAMICITEMADD / ONCRMDYNAMICITEMUPDATE / ONCRMDYNAMICITEMDELETEz0.0.0.0)hostport)
r   r8   
SystemExitr9   rE   r*   joincategory_idsapprunr.   r"   r    mainrK   d   s    ((ABB	)&++
78	
*+	
#F$9$9#: ;hhCv/B/BCCD	F 
	P GGG-r"   __main__N)returnr   )rM   r   )rM   None)
__future__r   flaskr   r   r   
app.configr   app.servicer   __name__rI   r!   r+   r   r/   postr7   rK   r.   r"   r    <module>rU      s{    " ) )  +Ho6. ! ! )> >B." zF r"   