
    |e>                        d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZmZ d
dlmZmZmZ ededej        ddfd            ZdefdZdedefdZ G d dej        e          ZdS )zProvide info to system health.    N)deque)datetime)Logger)web)system_health)HomeAssistantView)HomeAssistantcallback   )DOMAINPRIVATE_KEYSsource_hashhassregisterreturnc                 :    |                     t                     d S )N)async_register_infosystem_health_info)r   r   s     1/config/custom_components/sonoff/system_health.pyasync_registerr      s       !344444    c                   K   dx}x}x}}| j         t                                                   D ]V}|j                                        D ]:}d|v r|dz  }|j        j        r|d         r|dz  }d|v r|dz  }d|v r	d|v r|dz  };W| j         d         t                   }|j         dt                       d	| d
| | d
| d}t          j	        rddt          j	        d|d<   |S )Nr   onliner   	localtypehostparamsintegrations ()z / )versioncloud_onlinelocal_onlinefailed )typeerror	more_infodebug)
datar   valuesdevicescloudr   r    r   	DebugViewurl)	r   r!   r"   cloud_totallocal_totalregistrydeviceintegrationinfos	            r   r   r      sQ     >??L?<?+If%,,.. & &&--// 	& 	&F6!!q >( &VH-= & A%L f$$q V##F(:(: A%L	& )N+F3K!)==[]]==='99K99'99K99 D } T!)BY]SSWKr   loggerc                 j  K   t          |          }| j                            |           | j        d         t                   }| j        j                                         d {V }|j         dt                       d|t          dz   <   |
                    d|            |j        |j        d<   d S )Nr   r   r   _versionz	SysInfo: issue_tracker)r-   httpregister_viewr)   r   helperssystem_infoasync_get_system_infor    r   r(   r.   manifest)r   r5   viewr3   r4   s        r   setup_debugr@   7   s      VDID!!!)N+F3K)??AAAAAAAAD#.#6 J J+-- J J JD*	
LL#T##$$$,0HK)))r   c                   \     e Zd ZdZeZdZdef fdZde	j
        fdZdej        fdZ xZS )	r-   z2Class generate web page with component debug logs.Fr5   c                 \   t                                                       t          d          | _        |                                | _        dt           dt          j                     t          _
        |                    |            |                    t          j                   d S )Ni'  )maxlenz/api//)super__init__r   textgetEffectiveLevelpropagate_levelr   uuiduuid4r-   r.   
addHandlersetLevelloggingDEBUG)selfr5   	__class__s     r   rF   zDebugView.__init__I   s     '''	%7799 87777	$&&&&&r   recc                 4   t          |j        t                    r0|j        d |j                                        D             z  |_        t          j        |j                                      d          }| d|j	        d          d|j         }|j
        rMt          j        |j
        ddi}|dd	                    |d
d                                        dd          z   z  }| j                            |           | j        |j        k    r	d|_        d S d S )Nc                 ,    i | ]\  }}|t           v||S  )r   ).0kvs      r   
<dictcomp>z$DebugView.handle.<locals>.<dictcomp>Y   s/     ! ! !AQl5J5J15J5J5Jr   z%Y-%m-%d %H:%M:%Sz [r   z] limitr   |r$   
)
isinstanceargsdictmsgitemsr   fromtimestampcreatedstrftime	levelnameexc_info	tracebackformat_exceptionjoinreplacerG   appendrI   levelno)rP   rR   dtrb   excs        r   handlezDebugView.handleW   s"   ch%% 	g ! !!$!1!1! ! ! CG #CK0099:MNN44s}Q'443744< 	>,clD!DDC3RSS**224====C	 #+--CKKK .-r   requestc                   K   	 | j         }d|j        v r<t          j        d|j        d          dt          j                  fd|D             }d|j        v r%t          |j        d                   }|| d          }d                    |          }|j                            dd          }t          j	        d	| d
| dd          S # t          $ r t          j	        d          cY S w xY w)Nq(r   c                 >    g | ]}                     |          |S rU   )search)rV   pregs     r   
<listcomp>z!DebugView.get.<locals>.<listcomp>m   s(    ;;;qSZZ]];;;;r   tr]   rr$   z?<!DOCTYPE html><html><head><meta http-equiv="refresh" content="z"></head><body><pre>z</pre></body></html>z	text/html)rG   content_typei  )status)rG   queryrecompile
IGNORECASEintrk   getr   Response	Exception)rP   rr   linestailbodyr|   ry   s         @r   r   zDebugView.getg   s/     	,IEgm##j!;gmC&8!;!;!;R]KK;;;;E;;;gm##7=-..teff99U##D!!#r**A<=> "   )     	, 	, 	,<s++++++	,s   CC C.-C.)__name__
__module____qualname____doc__r   namerequires_authr   rF   rN   	LogRecordrq   r   Requestr   __classcell__)rQ   s   @r   r-   r-   C   s        <<DM'v ' ' ' ' ' ''+     , , , , , , , , ,r   r-   )r   rN   r   ri   rJ   collectionsr   r   r   aiohttpr   homeassistant.componentsr   homeassistant.components.httpr   homeassistant.corer	   r
   
core.constr   r   r   SystemHealthRegistrationr   r   r@   Handlerr-   rU   r   r   <module>r      s   $ $  				                              2 2 2 2 2 2 ; ; ; ; ; ; 6 6 6 6 6 6 6 6 9 9 9 9 9 9 9 9 9 9 
5
5#0#I5	5 5 5 
5=    <	5M 	56 	5 	5 	5 	5;, ;, ;, ;, ;,!2 ;, ;, ;, ;, ;,r   