
    f                     T    d dl m Z  d dlZd dlZd dlmZ d dlmZ  G d d          ZdS )    )datetimeN)resolve)settingsc                        e Zd Zd Zd Zd ZdS )APILogMiddlewarec                    || _         t          j                            t          j                            t
                    d          }t          j        |d           t          j                            |d          | _        t          j                            |d          | _        t          j                            |d          | _	        d S )NlogsT)exist_okzapi_logs/access_log.jsonzapi_logs/delete_log.jsonzapi_logs/error_log.json)
get_responseospathjoindirname__file__makedirsaccess_log_filedelete_log_fileerror_log_file)selfr   log_dirs      O/var/www/html/nettyfy-visnx/visnx-backend/Nettyfy_visnx/myprofile/middleware.py__init__zAPILogMiddleware.__init__Q   s    ( ',,rwx88&AA
Gd++++!w||G5OPP!w||G5OPP gll74MNN    c                    	 t           j                            |          rVt          |d          5 }	 t	          j        |          }n# t          j        $ r g }Y nw xY wddd           n# 1 swxY w Y   ng }|                    |           t          |d          5 }t	          j        ||d           ddd           dS # 1 swxY w Y   dS # t          $ r }t          d| d|            Y d}~dS d}~ww xY w)z,Safely append a new entry to a JSON log filezr+Nw   )indentzError writing to log file z: )r   r   existsopenjsonloadJSONDecodeErrorappenddump	Exceptionprint)r   log_file	new_entryfr	   es         r   _append_logzAPILogMiddleware._append_log`   s   	@w~~h'' (D)) "Q"#y||/ " " "!"" " " " " " " " " " " " " " " KK	""" h$$ -	$!,,,,- - - - - - - - - - - - - - - - - -  	@ 	@ 	@>x>>1>>?????????	@s   /C A+AA+AA+AA+C +A//C 2A/3+C C6C CC 
CC 
C:C55C:c           	      J   t          |j                  }|j        dk    r|                     |          S |                     |          }|j        j        s|j        j        r|j        j        }|j        j        r|j        j        }|j        j        r(|j        j        r|j        j        dz   |j        j        z   }|j        j        s|j        j        sd}nd}|j        |j	        t          j        dz   |j        z   |j        t          t          j                              |d}|                     | j        |           |j        dk    r{|j        |j	        t          j        dz   |j        z   |j        |j        r|j        d         ndt          t          j                              |d}|                     | j        |           |j        dk    rU|j        dk     rd	|d
<   n)|j        dk    rd|d
<   |j        r|j        d         nd|d<   |                     | j        |           |S )Nadmin  )methodcontent_typer   status_codedateuseri  data)r0   r1   r   r2   errorr3   r4   DELETESuccessstatusFailedr6   )r   r   app_namer   r4   is_anonymous
first_name	last_namer0   r1   r   URLr2   strr   nowr+   r   r5   r   r   )r   requestresolved_pathresponseusernameaccess_log_entryerror_log_entrys          r   __call__zAPILogMiddleware.__call__v   s=   --!W,,$$W---$$W--|( 
	|& 3"<2|% 2"<1|& N7<+A N"<236w|7MM<* 7<3I Hn#0LOGL0#/x|~~&&
 
 	-/?@@@ 3&&!. ' 4 R4'32:-Gv..R8<>>**  O T0/BBB >X%%#c))-6 **%,,-5 *EM],ZHM&,A,AXZ )T13CDDD
 r   N)__name__
__module____qualname__r   r+   rH    r   r   r   r   P   sG        O O O@ @ @,? ? ? ? ?r   r   )r   r    r   django.urlsr   django.confr   r   rL   r   r   <module>rO      s   T        				                  e e e e e e e e e er   