Ë
    "ïàj$  ã                   óÈ   — d Z ddlZddlZddlmZ ddlmZmZ dZ ej                  e
«      Z G d„ de«      Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Z G d„ d«      Zy)zB
Tools that make it easier to implement custom WsgiDAV providers.
é    N)Úutil)ÚDAVCollectionÚDAVNonCollectionzreStructuredText enc                   ó:   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZ	S )ÚVirtualCollectionzÍAbstract base class for collections that contain a list of static members.

    Member names are passed to the constructor.
    get_member() is implemented by calling self.provider.get_resource_inst()
    c                 óÀ   •— t         ‰| �  ||«       t        j                  |«      rd|i}t	        |«      t
        u sJ ‚t	        |«      t        u sJ ‚|| _        || _        y )NÚtype)	ÚsuperÚ__init__r   Úis_basestringr	   ÚdictÚlistÚdisplay_infoÚmember_name_list)ÚselfÚpathÚenvironr   r   Ú	__class__s        €úQ/srv/dav/.venv/lib/python3.12/site-packages/wsgidav/samples/dav_provider_tools.pyr   zVirtualCollection.__init__   sa   ø€ Ü‰Ñ˜˜wÔ'Ü×Ñ˜lÔ+Ø" LÐ1ˆLÜ�LÓ!¤TÑ)Ð)Ð)ÜÐ$Ó%¬Ñ-Ð-Ð-Ø(ˆÔØ 0ˆÕó    c                 ó   — | j                   S ©N)r   ©r   s    r   Úget_display_infoz"VirtualCollection.get_display_info&   s   € Ø× Ñ Ð r   c                 ó   — | j                   S r   )r   r   s    r   Úget_member_namesz"VirtualCollection.get_member_names)   s   € Ø×$Ñ$Ð$r   c                  ó   — y)z=Return True, since we don't want to lock virtual collections.T© r   s    r   Úprevent_lockingz!VirtualCollection.prevent_locking,   s   € àr   c                 óŠ   — | j                   j                  t        j                  | j                  |«      | j
                  «      S r   )ÚproviderÚget_resource_instr   Újoin_urir   r   )r   Únames     r   Ú
get_memberzVirtualCollection.get_member0   s1   € à�}‰}×.Ñ.Ü�M‰M˜$Ÿ)™) TÓ*¨D¯L©Ló
ð 	
r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r%   Ú__classcell__©r   s   @r   r   r      s!   ø„ ñô1ò!ò%òö
r   r   c                   óR   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )Ú_VirtualNonCollectionz5Abstract base class for all non-collection resources.c                 ó&   •— t         ‰| �  ||«       y r   )r
   r   )r   r   r   r   s      €r   r   z_VirtualNonCollection.__init__=   s   ø€ Ü‰Ñ˜˜wÕ'r   c                  ó   — y r   r   r   s    r   Úget_content_lengthz(_VirtualNonCollection.get_content_length@   ó   € Ør   c                  ó   — y r   r   r   s    r   Úget_content_typez&_VirtualNonCollection.get_content_typeC   r1   r   c                  ó   — y r   r   r   s    r   Úget_creation_datez'_VirtualNonCollection.get_creation_dateF   r1   r   c                 ó   — | j                   S r   )r$   r   s    r   Úget_display_namez&_VirtualNonCollection.get_display_nameI   s   € Ø�y‰yÐr   c                 ó   — t         ‚r   ©ÚNotImplementedErrorr   s    r   r   z&_VirtualNonCollection.get_display_infoL   ó   € Ü!Ð!r   c                  ó   — y r   r   r   s    r   Úget_etagz_VirtualNonCollection.get_etagO   r1   r   c                  ó   — y r   r   r   s    r   Úget_last_modifiedz'_VirtualNonCollection.get_last_modifiedR   r1   r   c                  ó   — y)NFr   r   s    r   Úsupport_rangesz$_VirtualNonCollection.support_rangesU   s   € Ør   )r&   r'   r(   r)   r   r0   r3   r5   r7   r   r=   r?   rA   r*   r+   s   @r   r-   r-   :   s3   ø„ Ù?ô(òòòòò"òòör   r-   c                   óH   ‡ — e Zd ZdZd	ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )
ÚVirtualTextResourcez$A virtual file, containing a string.c                 óP   •— t         ‰| �  ||«       || _        || _        || _        y r   )r
   r   ÚcontentÚdisplay_nameÚdisplay_type)r   r   r   rE   rF   rG   r   s         €r   r   zVirtualTextResource.__init__g   s)   ø€ Ü‰Ñ˜˜wÔ'ØˆŒØ(ˆÔØ(ˆÕr   c                 óP   — t        | j                  «       j                  «       «      S r   )ÚlenÚget_contentÚreadr   s    r   r0   z&VirtualTextResource.get_content_lengthm   s   € Ü�4×#Ñ#Ó%×*Ñ*Ó,Ó-Ð-r   c                 ó<   — | j                   j                  d«      ryy)Nz.txtz
text/plainú	text/html)r$   Úendswithr   s    r   r3   z$VirtualTextResource.get_content_typep   s   € Ø�9‰9×Ñ˜fÔ%ØØr   c                 ó6   — | j                   xs | j                  S r   )rF   r$   r   s    r   r7   z$VirtualTextResource.get_display_nameu   s   € Ø× Ñ Ò- D§I¡IÐ-r   c                 ó
   — ddiS )Nr	   zVirtual info filer   r   s    r   r   z$VirtualTextResource.get_display_infox   s   € ØÐ+Ð,Ð,r   c                  ó   — y)NTr   r   s    r   r   z#VirtualTextResource.prevent_locking{   r1   r   c                 ó@   — t        j                  | j                  «      S r   )r   ÚStringIOrE   r   s    r   rJ   zVirtualTextResource.get_content‚   s   € Ü�}‰}˜TŸ\™\Ó*Ð*r   )NN)r&   r'   r(   r)   r   r0   r3   r7   r   r   rJ   r*   r+   s   @r   rC   rC   d   s)   ø„ Ù.õ)ò.òò
.ò-òö+r   rC   c                   óJ   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )
ÚFileResourcezRepresents an existing file.i    c                 ó¤   •— t         j                  j                  |«      st        j	                  d|›d�«       t
        ‰| �  ||«       || _        y )NzFileResource(z) does not exist.)Úosr   ÚexistsÚ_loggerÚerrorr
   r   Ú	file_path)r   r   r   r[   r   s       €r   r   zFileResource.__init__Ž   s?   ø€ Ü�w‰w�~‰~˜iÔ(Ü�M‰M˜M¨)¨Ð6GÐHÔIÜ‰Ñ˜˜wÔ'Ø"ˆ�r   c                 óf   — t        j                  | j                  «      }|t        j                     S r   )rW   Ústatr[   ÚST_SIZE©r   Ústatresultss     r   r0   zFileResource.get_content_length”   s#   € Ü—g‘g˜dŸn™nÓ-ˆØœ4Ÿ<™<Ñ(Ð(r   c                 ó”   — t         j                  j                  | j                  «      syt	        j
                  | j                  «      S )NrM   )rW   r   Úisfiler[   r   Úguess_mime_typer   s    r   r3   zFileResource.get_content_type˜   s0   € Ü�w‰w�~‰~˜dŸn™nÔ-Øô
 ×#Ñ# D§N¡NÓ3Ð3r   c                 óf   — t        j                  | j                  «      }|t        j                     S r   )rW   r]   r[   ÚST_CTIMEr_   s     r   r5   zFileResource.get_creation_date¡   ó#   € Ü—g‘g˜dŸn™nÓ-ˆØœ4Ÿ=™=Ñ)Ð)r   c                 ó
   — ddiS )Nr	   ÚFiler   r   s    r   r   zFileResource.get_display_info¥   s   € Ø˜ÐÐr   c                 óf   — t        j                  | j                  «      }|t        j                     S r   )rW   r]   r[   ÚST_MTIMEr_   s     r   r?   zFileResource.get_last_modified¨   rf   r   c                 óL   — t        | j                  dt        j                  «      S )NÚrb)Úopenr[   rU   ÚBUFFER_SIZEr   s    r   rJ   zFileResource.get_content°   s   € ô
 �D—N‘N D¬,×*BÑ*BÓCÐCr   )r&   r'   r(   r)   rn   r   r0   r3   r5   r   r?   rJ   r*   r+   s   @r   rU   rU   ‰   s/   ø„ Ù&à€Kô#ò)ò4ò*ò ò*öDr   rU   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚDAVResolverz<Return a DAVResource object for a path (None, if not found).c                 ó    — || _         || _        y r   )Úparent_resolverr$   )r   rr   r$   s      r   r   zDAVResolver.__init__¾   s   € Ø.ˆÔØˆ�	r   c                 ó   — t         ‚r   r9   )r   Úscript_nameÚ	path_infor   s       r   ÚresolvezDAVResolver.resolveÂ   r;   r   N)r&   r'   r(   r)   r   rv   r   r   r   rp   rp   »   s   „ ÙFòó"r   rp   )r)   rW   r]   Úwsgidavr   Úwsgidav.dav_providerr   r   Ú__docformat__Úget_module_loggerr&   rY   r   r-   rC   rU   rp   r   r   r   ú<module>r{      sr   ðñó 
Û å ß @à%€à
 ˆ$×
 Ñ
  Ó
*€ô
˜ô 
ôHÐ,ô ôT+Ð/ô +ôJ,DÐ(ô ,D÷d"ò "r   