U
    ª6#^Æ  ã                   @   sà   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	Z
zd dlmZ W n  ek
rp   d dlmZ Y nX dZG dd	„ d	ejƒZd
d„ Zdd„ ZedkrÜd dlZeejd ƒZe ¡ D ]Zeded ed f ƒ q¾dS )é    )Úprint_functionN)Úmake_parser)Úhandler)ÚInputSource)ÚStringIOz2urn:oasis:names:tc:opendocument:xmlns:manifest:1.0c                   @   sZ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
ddd„Zdd„ ZdS )ÚODFManifestHandlerzV The ODFManifestHandler parses a manifest file and produces a list of
        content c                 C   s    i | _ tdf| j| jfi| _d S )Nz
file-entry)ÚmanifestÚ
MANIFESTNSÚs_file_entryÚ	donothingÚelements)Úself© r   úO/var/www/html/UseVoiceDocker/env/lib/python3.8/site-packages/odf/odfmanifest.pyÚ__init__-   s     
ÿzODFManifestHandler.__init__c                 C   s   |||ƒ d S ©Nr   )r   ÚtagÚmethodÚattrsr   r   r   Úhandle_starttag6   s    z"ODFManifestHandler.handle_starttagc                 C   s   ||ƒ d S r   r   )r   r   r   r   r   r   Úhandle_endtag9   s    z ODFManifestHandler.handle_endtagc                 C   s6   | j  |d¡d }|r&|  |||¡ n|  ||¡ d S )N©NNr   )r   Úgetr   Úunknown_starttag)r   r   Úqnamer   r   r   r   r   ÚstartElementNS<   s    z!ODFManifestHandler.startElementNSc                 C   s2   | j  |d¡d }|r$|  ||¡ n
|  |¡ d S )Nr   é   )r   r   r   Úunknown_endtag)r   r   r   r   r   r   r   ÚendElementNSC   s    zODFManifestHandler.endElementNSc                 C   s   d S r   r   ©r   r   r   r   r   r   r   J   s    z#ODFManifestHandler.unknown_starttagc                 C   s   d S r   r   )r   r   r   r   r   r   M   s    z!ODFManifestHandler.unknown_endtagNc                 C   s   d S r   r   r   r   r   r   r   P   s    zODFManifestHandler.donothingc                 C   s2   |  tdfd¡}|  tdf¡}||dœ| j|< d S )Nú
media-typezapplication/octet-streamú	full-path)r    r!   )r   r	   r   )r   r   r   ÚmÚpr   r   r   r
   S   s    zODFManifestHandler.s_file_entry)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r
   r   r   r   r   r   )   s   	
r   c                 C   sj   t ƒ }tƒ }| tjd¡ | |¡ | t ¡ ¡ tƒ }t	| t
ƒsL|  d¡} | t| ƒ¡ | |¡ |jS )Nr   zutf-8)r   r   Z
setFeaturer   Zfeature_namespacesZsetContentHandlerZsetErrorHandlerZErrorHandlerr   Ú
isinstanceÚstrÚdecodeZsetByteStreamr   Úparser   )ZmanifestxmlZ	odhandlerÚparserZinpsrcr   r   r   Úmanifestlist_   s    



r-   c                 C   s$   t  | ¡}| d¡}| ¡  t|ƒS )NzMETA-INF/manifest.xml)ÚzipfileÚZipFileÚreadÚcloser-   )ZodtfileÚzr   r   r   r   Úodfmanifestn   s    

r3   Ú__main__r   z%-40s %-40sr    r!   )Ú
__future__r   r.   Zdefusedxml.saxr   Zxml.saxr   Zxml.sax.xmlreaderr   Zxml.sax.saxutilsÚxmlÚ	cStringIOr   ÚImportErrorÚior	   ZContentHandlerr   r-   r3   r$   ÚsysÚargvÚresultÚvaluesÚfileÚprintr   r   r   r   Ú<module>   s$   6