o
    ä›eÆ  ã                   @   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y7   d dlmZ Y nw dZG dd	„ d	ejƒZd
d„ Zdd„ Zedkrmd dlZeejd ƒZe ¡ D ]Zeded ed f ƒ q^dS 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   úB/var/www/html/venv/lib/python3.10/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   s8   | j  |d¡d }|r|  |||¡ d S |  ||¡ d S )N©NNr   )r   Úgetr   Úunknown_starttag)r   r   Úqnamer   r   r   r   r   ÚstartElementNS<   s   z!ODFManifestHandler.startElementNSc                 C   s4   | j  |d¡d }|r|  ||¡ d S |  |¡ d S )Nr   é   )r   r   r   Úunknown_endtag)r   r   r   r   r   r   r   ÚendElementNSC   s   zODFManifestHandler.endElementNSc                 C   ó   d S r   r   ©r   r   r   r   r   r   r   J   ó   z#ODFManifestHandler.unknown_starttagc                 C   r   r   r   )r   r   r   r   r   r   M   r!   z!ODFManifestHandler.unknown_endtagNc                 C   r   r   r   r    r   r   r   r   P   r!   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_entryr   )Ú__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
ƒs&|  d¡} | t| ƒ¡ | |¡ |jS )Nr   zutf-8)r   r   Ú
setFeaturer   Úfeature_namespacesÚsetContentHandlerÚsetErrorHandlerÚErrorHandlerr   Ú
isinstanceÚstrÚdecodeÚsetByteStreamr   Úparser   )ÚmanifestxmlÚ	odhandlerÚparserÚinpsrcr   r   r   Úmanifestlist_   s   



r8   c                 C   s$   t  | ¡}| d¡}| ¡  t|ƒS )NzMETA-INF/manifest.xml)ÚzipfileÚZipFileÚreadÚcloser8   )ÚodtfileÚzr   r   r   r   Úodfmanifestn   s   

r?   Ú__main__r   z%-40s %-40sr"   r#   )Ú
__future__r   r9   Údefusedxml.saxr   Úxml.saxr   Úxml.sax.xmlreaderr   Úxml.sax.saxutilsÚxmlÚ	cStringIOr   ÚImportErrorÚior	   ÚContentHandlerr   r8   r?   r&   ÚsysÚargvÚresultÚvaluesÚfileÚprintr   r   r   r   Ú<module>   s,   ÿ6ü