
    ~Wf                         d dl Z d dlZd dlZd dlmZmZmZ d dlZd dlZd dlZ G d de	          Z
 G d de          ZdS )    N)datetimetzinfo	timedeltac                   `    e Zd Zi dfdZd Zd Zd Zd Zd Zd Z	i fd	Z
d
 Zd Zd Zd ZdS )PandaRequestNc                 0   |                                 | _        |                     |          | _        || _        || _        || _        | j                                        D ]6\  }}t          |t                    rt          j        |          | j        |<   7|                                 }d | _        | j        dk    r!d|v rdt          |d         d          i| _        |                                 |dz   |                     |          z   | _        d S )NPOSTfilerb?)upperverbcanonical_pathpathcreddata	timestamp	iteritems
isinstancedictjsondumpssigned_paramsfilesopenapi_urlcanonical_querystringrequests_url)	selfr   r   r   r   r   namevalr   s	            L/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/panda/request.py__init__zPandaRequest.__init__   s   JJLL	''--			",,.. 	2 	2ID##t$$ 2"&*S//	$**,,
9FdNN $tF|T":":;DJ&*llnnndSj4C]C]^kClCl6l6lm    c                      t          t          | j                                                  | j        | j                  }|j        S )N)r   )getattrrequestsr   lowerr   r   text)r   reqs     r"   sendzPandaRequest.send   s8    2gh	 1 12243DDJWWWxr$   c                    | j                                         }| j        d         |d<   | j        d         |d<   | j        p|                                 |d<   |                                }|                    |           d|v r|d= |                     | j        | j        | j        d         | j        d         |          |d<   |S )Ncloud_id
access_keyr   r
   api_host
secret_key	signature)	r   copyr   r   generate_timestampupdategenerate_signaturer   r   )r   auth_paramsadditional_argss      r"   r   zPandaRequest.signed_params   s    inn&&"&)J"7J$(Il$;L!#'>#NT5L5L5N5NK %**,,{+++ _$$'#'#:#:49diQUQZ[eQfhlhqr~h  BQ  $R  $RK r$   c                 F    t          | j        d                   dk    rdS dS )Napi_port443httpshttpstrr   r   s    r"   api_protocolzPandaRequest.api_protocol.   s&    ty$%%..76r$   c                     |                                  dz   |                                 z   |                                 z   S )Nz://)r@   api_host_and_portapi_pathr?   s    r"   r   zPandaRequest.api_url4   s7      ""U*T-C-C-E-EEWWr$   c                     | j         d         }t          | j         d                   dk    r |dt          | j         d                   z   z  }|S )Nr/   r9   80:)r   r>   )r   rets     r"   rB   zPandaRequest.api_host_and_port7   sK    i
#ty$%%--3TYz23333C
r$   c                 <    dt          | j        d                   z   S )Nz/vapi_versionr=   r?   s    r"   rC   zPandaRequest.api_path=   s    c$)M23333r$   c                 L   |                      |          }|                                dz   |                                z   dz   |z   dz   |z   }t          j        ||t
          j                                                  }t          j	        |          
                                S )N
)r   r   r(   hmacnewhashlibsha256digestbase64	b64encodestrip)	r   r   request_urihostr0   paramsquery_stringstring_to_signr1   s	            r"   r5   zPandaRequest.generate_signature@   s    11&99 JJLL4JJLL   	 HZHHOOQQ		**00222r$   c                     t          |                              d          }t          j        |                              dd                              dd                              dd          S )Nzutf-8z%7E~ z%20/z%2F)unicodeencodeurllibquotereplace)r   ss     r"   	urlescapezPandaRequest.urlescapeL   sZ    AJJg&&|A&&uc22::3FFNNsTYZZZr$   c                 2    d|                     d          z   S )Nr\   z 	
 /)rS   )r   r   s     r"   r   zPandaRequest.canonical_pathP   s    TZZ 01111r$   c                 P     d fd	d                      |                    S )Nc                    g }t          d |                                 D                       }|D ]\  }}|dk    rt          |d          r| ||          z  },d }|r1|d                    |          d                    |          }n-                    |          d                    |          }|                    |           |S )Nc                     g | ]	\  }}||f
S  rh   ).0kvs      r"   
<listcomp>zIPandaRequest.canonical_querystring.<locals>.recursion.<locals>.<listcomp>W   s     $F$F$F1aV$F$F$Fr$   r
   values[z]==)sortedr   hasattrrc   append)	dbasepairsordered_paramskeyvaluenew_pair	recursionr   s	          r"   rz   z5PandaRequest.canonical_querystring.<locals>.recursionT   s    E#$F$F$F$F$FGGN, + +
U&==5(++ +YYuc222EE#H Z26$$s8K8K8K8KT^^\aMbMbMb#c.2nnS.A.A.A.A4>>RWCXCXCX#YLL****Lr$   &N)join)r   rs   rz   s   ` @r"   r   z"PandaRequest.canonical_querystringS   sC    	 	 	 	 	 	 	" xx		!%%%r$   c                 f    t          j        t                                                                S r|   )r   nowUTC	isoformatr?   s    r"   r3   zPandaRequest.generate_timestampg   s"    |CEE"",,...r$   )__name__
__module____qualname__r#   r+   r   r@   r   rB   rC   r5   rc   r   r   r3   rh   r$   r"   r   r      s        .0D n n n n&      X X X  4 4 4 NP 
3 
3 
3 
3[ [ [2 2 2& & &(/ / / / /r$   r   c                   $    e Zd Zd Zd Zd Zd ZdS )r   c                      t          d          S Nr   r   r   dts     r"   	utcoffsetzUTC.utcoffsetm       ||r$   c                     dS )Nr   rh   r   s     r"   tznamez
UTC.tznamep   s    ur$   c                      t          d          S r   r   r   s     r"   dstzUTC.dsts   r   r$   N)r   r   r   __doc__r   r   r   rh   r$   r"   r   r   j   sF        I        r$   r   )rN   rL   rQ   r   r   r   r'   r_   r   objectr   r   rh   r$   r"   <module>r      s                0 0 0 0 0 0 0 0 0 0   a/ a/ a/ a/ a/6 a/ a/ a/F
 
 
 
 
& 
 
 
 
 
r$   