o
    g                     @   sf  d Z ddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZmZmZ ddlZddlmZmZmZmZmZmZ e	eef Ze	eef Zeeeef  Zeeeef  ZedZG dd de
ZG d	d
 d
e
Zdeeef dedee fddZ dej!defddZ"	d"dej#dedefddZ$dededej%dededej#fddZ&deee  dee fd d!Z'dS )#z'Utility functions for simple-salesforce    N)
AnyIterableListMappingMutableMapping
NamedTupleNoReturnOptionalTypeVarUnion   )SalesforceExpiredSessionSalesforceGeneralErrorSalesforceMalformedRequestSalesforceMoreThanOneRecordSalesforceRefusedRequestSalesforceResourceNotFoundTc                   @   s"   e Zd ZU dZeed< eed< dS )Usagez&Usage information for a Salesforce orgusedtotalN)__name__
__module____qualname____doc__int__annotations__ r   r   O/home/ubuntu/webapp/venv/lib/python3.10/site-packages/simple_salesforce/util.pyr      s   
 r   c                   @   s*   e Zd ZU dZeed< eed< eed< dS )PerAppUsagez.Per App Usage information for a Salesforce orgr   r   nameN)r   r   r   r   r   r   strr   r   r   r   r      s
   
 r   	xmlStringelementNamereturnc                 C   sX   t jj| }||}d}t|dkr*|d  d| d dd| d d}|S )z
    Extracts an element value from an XML string.

    For example, invoking
    getUniqueElementValueFromXmlString(
        '<?xml version="1.0" encoding="UTF-8"?><foo>bar</foo>', 'foo')
    should return the value 'bar'.
    Nr   <> z</)xmldomminidomparseStringgetElementsByTagNamelentoxmlreplace)r"   r#   xmlStringAsDomelementsByNameelementValuer   r   r   "getUniqueElementValueFromXmlString#   s   
r3   datec                 C   sF   |  d}|  d}| |dd  d|dd  dddd	S )
z%Returns an ISO8601 string from a datez%Y-%m-%dT%H:%M:%Sz%zr      :   z%3A+z%2B)strftimer/   )r4   datetimestrtimezonestrr   r   r   date_to_iso8601;   s   

 r<   r'   resultr    c                 C   sV   z|   }W n ty   | j}Y nw tttttd}|| j	t
}|| j| j	||)zAException router. Determines which error to raise for bad results),  i  i  i  i  )json	Exceptiontextr   r   r   r   r   getstatus_coder   url)r=   r    response_contentexc_mapexc_clsr   r   r   exception_handlerF   s   
rH   rD   methodsessionheaderskwargsc                 K   sH   | di }||pi  |j|| fd|i|}|jdkr"t| |S )zdUtility method for performing HTTP call to Salesforce.

    Returns a `requests.result` object.
    additional_headersrK   r>   )popupdaterequestrC   rH   )rD   rI   rJ   rK   rL   rM   r=   r   r   r   call_salesforce\   s   
rQ   generator_functionc                 C   s   g }| D ]}| | q|S )z@Utility method for constructing a list from a generator function)extend)rR   ret_vallist_resultsr   r   r   list_from_generatorp   s   rV   )r'   )(r   datetimexml.dom.minidomr(   typingr   r   r   r   r   r   r   r	   r
   r   requests
exceptionsr   r   r   r   r   r   r!   HeadersProxiesBulkDataAnyBulkDataStrr   r   r   bytesr3   r4   r<   ResponserH   SessionrQ   rV   r   r   r   r   <module>   s^    0 




