
    ]h$                     p   d dl Z d dlZd dlmZmZ d dlmZ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  e j*                  e      Zg dZg dZdededefdZd Zdeeeef      deeeef      fdZ G d de      Z G d de      Z  G d de!      Z"y# e$ r Y w xY w# e$ r dZY w xY w)    N)ListTuple)unquoteurlparse)
cmp_to_key)URL)AioHttpTransport)ClientAuthenticationError)SansIOHTTPPolicy   )sign_string)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   i  r   i  i!  i#  i%  r   r   r   i-  i  r   r   i3  r   i  i  i  i  i   i"  i$  i&  i(  i*  r   r   r   r   r   r   r     	  
    !  #  %  ,  2  5  6  H  Q  p  |  ~                      r   r   r   iC  iD  iH  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r   iL  r   iP  r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   i  r   r   r   r   r   i  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   lhsrhsreturnc                    t         t        g}dddt        |      f\  }}}}t        |       }t        |      }||k  r||dz
  k(  r||k7  r||kD  ry||k  ryy||k  r||   t        | |            nd}	||k  r||   t        ||            nd}
|	dk(  r|
dk(  r
d}d}|dz  }n3|	|
k(  r|dz  }|dz  }n#|	dk(  r|dz  }n|
dk(  r|dz  }n|	|
k  ry|	|
kD  ryy||k  ry)Nr   r   )	table_lv0	table_lv4lenord)r(   r)   tables
curr_levelijnlhs_lenrhs_lenw1w2s              o/var/www/core.comfia.cic-ware.com/crm/lib/python3.12/site-packages/azure/storage/blob/_shared/authentication.pycomparer;   7   s%   #FQ3v;.J1a#hG#hG
q.!a% Q!V1u1u01GVJCF,01GVJCF,9sAA!OJ2XFAFA1WFA1WFABwBw7 q.8     c                 L    d}| j                   r| j                   d   } ||      S )N r   )args)exdesired_typemsgs      r:   _wrap_exceptionrC   \   s&    
C	wwggajr<   input_headersc                    i }g }| D ]  \  }}|||<   |j                  |        	 t        |t        t                    }g }|D ]$  }|j                  ||j                  |      f       & |S # t        $ r}t	        d      |d }~ww xY w)N)keyz3Illegal character encountered when sorting headers.)appendsortedr   r;   
ValueErrorpop)rD   header_dictheader_keyskvexcsorted_headersrF   s           r:   _storage_header_sortrQ   c   s     KK 1A1Y[j.AB
 N ;sKOOC$89:;  YNOUXXYs   A- -	B6BBc                       e Zd ZdZy)AzureSigningErrora!  
    Represents a fatal error when attempting to sign a request.
    In general, the cause of this exception is user error. For example, the given account key is not valid.
    Please visit https://learn.microsoft.com/azure/storage/common/storage-create-storage-account for more info.
    N)__name__
__module____qualname____doc__ r<   r:   rS   rS   x   s    r<   rS   c                   p     e Zd Z fdZed        Zed        Zd Zed        Zed        Z	d Z
d Z xZS )	SharedKeyCredentialPolicyc                 F    || _         || _        t        t        |           y N)account_nameaccount_keysuperrZ   __init__)selfr]   r^   	__class__s      r:   r`   z"SharedKeyCredentialPolicy.__init__   s!    (&'79r<   c                     t        d | j                  j                  j                         D              dv rd   dk(  rd= dj	                  fd|D              dz   S )Nc              3   L   K   | ]  \  }}|s	|j                         |f  y wr\   )lower).0namevalues      r:   	<genexpr>z9SharedKeyCredentialPolicy._get_headers.<locals>.<genexpr>   s"     nuhm

e,ns   
$$content-length0
c              3   B   K   | ]  }j                  |d         yw)r>   N)get)rf   xheaderss     r:   ri   z9SharedKeyCredentialPolicy._get_headers.<locals>.<genexpr>   s     EQ+Es   )dicthttp_requestrp   itemsjoin)requestheaders_to_signrp   s     @r:   _get_headersz&SharedKeyCredentialPolicy._get_headers   s`    n@T@T@\@\@b@b@dnnw&73C+D+K()yyE_EELLr<   c                 4    | j                   j                  dz   S )Nrl   )rr   method)ru   s    r:   	_get_verbz#SharedKeyCredentialPolicy._get_verb   s    ##**T11r<   c           	          t        |j                  j                        j                  }	 t	        |j
                  j                  t              sit	        t        |j
                  j                  dd       t              s:t	        t        t        |j
                  j                  dd       dd       t              r&t        |      }d| j                  z   t        |      z   S 	 d| j                  z   |z   S # t        $ r Y w xY w)N
_transport/)r   rr   urlpath
isinstancecontext	transportr	   getattrr   r]   str	TypeError)ra   ru   uri_paths      r:   _get_canonicalized_resourcez5SharedKeyCredentialPolicy._get_canonicalized_resource   s    G00445::	'//335EFww'@'@,PTUWghwww/H/H,X\']_kmqr/1x=T...X>>1 T&&&11  		s   B2C1 1	C=<C=c                 ,   d}g }| j                   j                  j                         D ]8  \  }}|j                  d      s|j	                  |j                         |f       : t        |      }|D ]   \  }}|	|dj                  |d|dg      z  }" |S )Nr>   zx-ms-:rl   )rr   rp   rs   
startswithrG   re   rQ   rt   )ru   string_to_signx_ms_headersrg   rh   s        r:   _get_canonicalized_headersz4SharedKeyCredentialPolicy._get_canonicalized_headers   s    "//77==? 	;KD%w'##TZZ\5$9:	; ,L9' 	DKD% "''4eT*B"CC	D r<   c                     t        | j                  j                  j                               }|j	                          d}|D ]-  \  }}|	|d|j                         z   dz   t        |      z   z  }/ |S )Nr>   rl   r   )listrr   queryrs   sortre   r   )ru   sorted_queriesr   rg   rh   s        r:   !_get_canonicalized_resource_queryz;SharedKeyCredentialPolicy._get_canonicalized_resource_query   sx    g2288>>@A) 	MKD% $"5";gen"LL	M r<   c                     	 t        | j                  |      }d| j                  z   dz   |z   }||j                  j                  d<   y # t
        $ r}t        |t              |d }~ww xY w)Nz
SharedKey r   Authorization)r   r^   r]   rr   rp   	ExceptionrC   rS   )ra   ru   r   	signatureauth_stringr@   s         r:   _add_authorization_headerz3SharedKeyCredentialPolicy._add_authorization_header   sn    	A#D$4$4nEI&):)::S@9LK<GG  ((9 	A ""&78b@	As   AA 	A&A!!A&c                     | j                  |      | j                  |g d      z   | j                  |      z   | j                  |      z   | j	                  |      z   }| j                  ||       y )N)zcontent-encodingzcontent-languagerj   zcontent-md5zcontent-typedatezif-modified-sincezif-matchzif-none-matchzif-unmodified-since
byte_range)rz   rw   r   r   r   r   )ra   ru   r   s      r:   
on_requestz$SharedKeyCredentialPolicy.on_request   s    NN7# ++G4	5 ,,W5
6 227;< 	 	&&w?r<   )rT   rU   rV   r`   staticmethodrw   rz   r   r   r   r   r   __classcell__)rb   s   @r:   rZ   rZ      sk    :
 M M 2 22 
 
 	 	A@r<   rZ   c                       e Zd Zd Zd Zy)StorageHttpChallengec                    |st        d      i | _        |j                         j                  dd      \  | _        }t        j                  d|      D ]\  }|j                  d      }t        |      dk(  s#|d   j                  d      }|d   j                  d      }|sN|| j                  |<   ^ | j                  j                  d	      | _        | j                  st        d
      | j                  j                  d      | _	        | j                  st        d      t        | j                        j                  j                  d      }|j                  d      d   | _        y)zN Parses an HTTP WWW-Authentication Bearer challenge from the Storage service. zChallenge cannot be empty r   z[, ]=   r   z "authorization_urizAuthorization Uri not foundresource_idzResource id not foundr}   N)rI   _parametersstripsplitschemerer/   rn   r   r   r   r   lstrip	tenant_id)ra   	challengetrimmed_challengeitemcompsrF   rh   r   s           r:   r`   zStorageHttpChallenge.__init__   s;   899)2):)@)@a)H&& HHV%67 	2DJJsOE5zQAhnnT*at,,1D$$S)	2 "&!1!1!5!56I!J%%:;;++//>455D22388??D!,Q/r<   c                 8    | j                   j                  |      S r\   )r   rn   )ra   rF   s     r:   	get_valuezStorageHttpChallenge.get_value   s    ##C((r<   N)rT   rU   rV   r`   r   rX   r<   r:   r   r      s    0<)r<   r   )#loggingr   typingr   r   urllib.parser   r   	functoolsr   yarlr   ImportErrorazure.core.pipeline.transportr	   azure.core.exceptionsr
   azure.core.pipeline.policiesr   r>   r   	getLoggerrT   loggerr-   r.   r   intr;   rC   rQ   rS   rZ   objectr   rX   r<   r:   <module>r      s     	  *  	> < 9 			8	$			! !3 !3 !JU38_(= $uSRUXBW *1 Q@ 0 Q@j )6  )M  		
  s"   B  B+  B('B(+B54B5