Ë
    ×iBj%  ã                  óÂ   — d Z ddlmZ ddlZddlZddlmZ ddlZ ej                  e	«      Z
e G d„ d«      «       Ze G d„ d«      «       Z G d	„ d
e«      Z G d„ d«      Zy)u}   Airminal billing API client.

Handles check_balance and charge operations.
API key is NEVER logged â€” masked in all output.
é    )ÚannotationsN)Ú	dataclassc                  ó,   — e Zd ZU ded<   ded<   ded<   y)ÚBalanceResultÚboolÚsuccessÚfloatÚbalanceÚlockedN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úG/var/www/html/agent.samochodowy/src/agent_samochodowy/billing/client.pyr   r      s   … àƒMØƒNØ„Mr   r   c                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y)	ÚChargeResultr   r   r	   ÚchargedÚbalance_afterÚstrÚerrorNr   r   r   r   r   r      s   … àƒMØƒNØÓØ„Jr   r   c                  ó   — e Zd ZdZy)ÚInsufficientTokensErrorz6Raised when org has insufficient balance for a charge.N)r   r   r   Ú__doc__r   r   r   r   r   !   s   „ Ú@r   r   c                  ó8   — e Zd ZdZdd„Zd	d„Zd
d„Zdd„Zdd„Zy)ÚAirminalClientz%REST client for airminal billing API.c                ó¤   — |j                  d«      | _        d|v r|j                  d«      d   n|| _        t	        j
                  d¬«      | _        y )Nú/Ú_r   é   )Útimeout)ÚrstripÚ_urlÚsplitÚ_keyÚhttpxÚClientÚ_http)ÚselfÚapi_urlÚapi_keys      r   Ú__init__zAirminalClient.__init__(   s?   € Ø—N‘N 3Ó'ˆŒ	à-0°G©^�G—M‘M #Ó& qÒ)ÀˆŒ	Ü—\‘\¨"Ô-ˆ�
r   c                ó   — d| j                   iS )Nr-   )r'   ©r+   s    r   Ú_auth_paramszAirminalClient._auth_params.   s   € Ø˜4Ÿ9™9Ð%Ð%r   c           
     ó\  — | j                   j                  | j                  | j                  «       ¬«      }|j	                  «        |j                  «       }t        t        |j                  d«      «      t        |j                  dd«      «      t        |j                  dd«      «      ¬«      S )z&GET balance for the authenticated org.)Úparamsr   r
   r   r   )r   r
   r   )	r*   Úgetr%   r1   Úraise_for_statusÚjsonr   r   r	   )r+   ÚrespÚdatas      r   Úcheck_balancezAirminalClient.check_balance1   s€   € à�z‰z�~‰~˜dŸi™i°×0AÑ0AÓ0Cˆ~ÓDˆØ×ÑÔØ�y‰y‹{ˆÜÜ˜Ÿ™ )Ó,Ó-Ü˜$Ÿ(™( 9¨aÓ0Ó1Ü˜Ÿ™ (¨AÓ.Ó/ô
ð 	
r   c           
     ó‚  — t        dt        j                  |«      «      }|||dddœ}| j                  j	                  | j
                  | j                  «       |ddi¬«      }|j                  dk(  rX|j                  j                  dd	«      j                  d«      r|j                  «       ni }t        |j                  d
d«      «      ‚|j                  «        |j                  «       }t        t        |j                  d«      «      t!        |j                  d|«      «      t!        |j                  dd«      «      d	¬«      S )z¯POST a transactional charge.

        Returns ChargeResult on success.
        Raises InsufficientTokensError on 402.
        Raises httpx exceptions on other errors.
        é   Úagent_fb)ÚtokensÚtaskÚ	referenceÚservice_typeÚunitszContent-Typezapplication/json)r3   r6   Úheadersi’  zcontent-typeÚ r   ÚINSUFFICIENT_TOKENSr   r   r   r   )r   r   r   r   )ÚmaxÚmathÚceilr*   Úpostr%   r1   Ústatus_coderB   r4   Ú
startswithr6   r   r5   r   r   r	   )r+   r=   r>   r?   Ú
api_tokensÚpayloadr7   r8   s           r   ÚchargezAirminalClient.charge<   s  € ô ˜œDŸI™I fÓ-Ó.ˆ
à ØØ"Ø&Øñ
ˆð �z‰z�‰Ø�I‰I˜d×/Ñ/Ó1Ø >Ð3EÐ"Fð ó 
ˆð
 ×Ñ˜sÒ"Ø"&§,¡,×"2Ñ"2°>À2Ó"F×"QÑ"QÐRdÔ"e�4—9‘9”;ÐkmˆDÜ)Ø—‘˜Ð"7Ó8óð ð 	×ÑÔØ�y‰y‹{ˆÜÜ˜Ÿ™ )Ó,Ó-Ü˜$Ÿ(™( 9¨fÓ5Ó6Ü §¡¨¸!Ó <Ó=Øô	
ð 	
r   c                ó8   — | j                   j                  «        y )N)r*   Úcloser0   s    r   rO   zAirminalClient.close`   s   € Ø�
‰
×ÑÕr   N)r,   r   r-   r   ÚreturnÚNone)rP   zdict[str, str])rP   r   )r=   r	   r>   r   r?   r   rP   r   )rP   rQ   )	r   r   r   r   r.   r1   r9   rM   rO   r   r   r   r   r   %   s   „ Ù/ó.ó&ó	
ó"
ôHr   r   )r   Ú
__future__r   ÚloggingrF   Údataclassesr   r(   Ú	getLoggerr   Úloggerr   r   Ú	Exceptionr   r   r   r   r   ú<module>rX      sw   ðñõ #ã Û Ý !ã à	ˆ×	Ñ	˜8Ó	$€ð ÷ð ó ðð ÷ð ó ðôA˜iô A÷<ò <r   