Ë
    @²Xj’  ã                  óÄ   — d dl mZ d dlZd dlZd dlZd dlZd dl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mZ dd	lmZ dd
lmZ ddgZ G d„ de«      Z G d„ de«      Zy)é    )ÚannotationsN)Úcasté   )ÚHeadersLike)Úget_required_header)Úconstruct_type)ÚSyncAPIResourceÚAsyncAPIResource)ÚInvalidWebhookSignatureError)ÚUnwrapWebhookEventÚWebhooksÚAsyncWebhooksc                  óJ   — e Zd Zddœ	 	 	 	 	 	 	 dd„Zdddœ	 	 	 	 	 	 	 	 	 dd„Zy)	r   N©Úsecretc          	     ó¾   — |€| j                   j                  }| j                  |||¬«       t        t        t        t        t        j                  |«      ¬«      «      S )úKValidates that the given payload was sent by OpenAI and parses the payload.©ÚpayloadÚheadersr   ©Útype_Úvalue)Ú_clientÚwebhook_secretÚverify_signaturer   r   r   ÚjsonÚloads)Úselfr   r   r   s       úh/var/www/html/content_generation/venv/lib/python3.12/site-packages/openai/resources/webhooks/webhooks.pyÚunwrapzWebhooks.unwrap   sT   € ð ˆ>Ø—\‘\×0Ñ0ˆFà×Ñ g°wÀvÐÔNäÜÜÜ(Ü—j‘j Ó)ôó
ð 	
ó    é,  ©r   Ú	tolerancec               óÚ  ‡— |€| j                   j                  }|€t        d«      ‚t        |d«      }t        |d«      }t        |d«      }	 t	        |«      }t	        t        j                  «       «      }	|	|z
  |kD  rt        d«      d‚||	|z   kD  rt        d«      d‚g }
|j                  «       D ]9  }|j                  d	«      r|
j                  |d
d «       Œ)|
j                  |«       Œ; |j                  d«      rt        j                  |dd «      }n|j                  «       }t        |t        «      r|j                  d«      n|}|› d|› d|› �}t        j                   t#        j$                  ||j                  «       t&        j(                  «      j+                  «       «      j                  «       Št-        ˆfd„|
D «       «      st        d«      d‚y# t        $ r t        d«      d‚w xY w)á\  Validates whether or not the webhook payload was sent by OpenAI.

        Args:
            payload: The webhook payload
            headers: The webhook headers
            secret: The webhook secret (optional, will use client secret if not provided)
            tolerance: Maximum age of the webhook in seconds (default: 300 = 5 minutes)
        Nú�The webhook secret must either be set using the env var, OPENAI_WEBHOOK_SECRET, on the client class, OpenAI(webhook_secret='123'), or passed to this functionúwebhook-signatureúwebhook-timestampú
webhook-idú Invalid webhook timestamp formatúWebhook timestamp is too oldúWebhook timestamp is too newúv1,r   Úwhsec_é   úutf-8Ú.c              3  óJ   •K  — | ]  }t        j                  ‰|«      –— Œ y ­w©N©ÚhmacÚcompare_digest©Ú.0ÚsigÚexpected_signatures     €r    Ú	<genexpr>z,Webhooks.verify_signature.<locals>.<genexpr>p   ó    øè ø€ ÐVÉ:ÀC”4×&Ñ&Ð'9¸3×?É:ùó   ƒ #úAThe given webhook signature does not match the expected signature©r   r   Ú
ValueErrorr   Úintr   ÚtimeÚsplitÚ
startswithÚappendÚbase64Ú	b64decodeÚencodeÚ
isinstanceÚbytesÚdecodeÚ	b64encoder7   ÚnewÚhashlibÚsha256ÚdigestÚany©r   r   r   r   r%   Úsignature_headerÚ	timestampÚ
webhook_idÚtimestamp_secondsÚnowÚ
signaturesÚpartÚdecoded_secretÚbodyÚsigned_payloadr<   s                  @r    r   zWebhooks.verify_signature,   sê  ø€ ð  ˆ>Ø—\‘\×0Ñ0ˆFàˆ>Üð`óð ô
 /¨wÐ8KÓLÐÜ'¨Ð1DÓEˆ	Ü(¨°,Ó?ˆ
ð	]Ü # I£Ðô ”$—)‘)“+ÓˆàÐ"Ñ" YÒ.Ü.Ð/MÓNÐTXÐXà˜s Y™Ò.Ü.Ð/MÓNÐTXÐXð
 !#ˆ
Ø$×*Ñ*Ö,ˆDØ�‰˜uÔ%Ø×!Ñ! $ q r (Õ+à×!Ñ! $Õ'ð	 -ð ×Ñ˜XÔ&Ü#×-Ñ-¨f°Q°R¨jÓ9‰Nà#Ÿ]™]›_ˆNä*4°W¼eÔ*Dˆw�~‰~˜gÔ&È'ˆð '˜< q¨¨°1°T°FÐ;ˆÜ#×-Ñ-Ü�H‰H�^ ^×%:Ñ%:Ó%<¼g¿n¹nÓM×TÑTÓVó
ç
‰&‹(ð 	ô
 ÓVÉ:ÓVÔVÜ.ØSóàðð WøôI ò 	]Ü.Ð/QÓRÐX\Ð\ð	]ús   ÁG ÇG*©r   ústr | bytesr   r   r   ú
str | NoneÚreturnr   ©
r   r`   r   r   r   ra   r%   rC   rb   ÚNone©Ú__name__Ú
__module__Ú__qualname__r!   r   © r"   r    r   r      su   „ ð "ñ
àð
ð ð
ð
 ð
ð 
ó
ð4 "ØñGàðGð ðGð
 ðGð ðGð 
ôGr"   c                  óJ   — e Zd Zddœ	 	 	 	 	 	 	 dd„Zdddœ	 	 	 	 	 	 	 	 	 dd„Zy)	r   Nr   c          	     ó  — |€| j                   j                  }| j                  |||¬«       t        |t        «      r|j                  d«      n|}t        t        t        t        t        j                  |«      ¬«      «      S )r   r   r2   r   )r   r   r   rK   rL   rM   r   r   r   r   r   )r   r   r   r   r]   s        r    r!   zAsyncWebhooks.unwrapw   sm   € ð ˆ>Ø—\‘\×0Ñ0ˆFà×Ñ g°wÀvÐÔNä*4°W¼eÔ*Dˆw�~‰~˜gÔ&È'ˆÜÜÜÜ(Ü—j‘j Ó&ôó
ð 	
r"   r#   r$   c               óÚ  ‡— |€| j                   j                  }|€t        d«      d‚t        |d«      }t        |d«      }t        |d«      }	 t	        |«      }t	        t        j                  «       «      }	|	|z
  |kD  rt        d«      d‚||	|z   kD  rt        d«      d‚g }
|j                  «       D ]9  }|j                  d	«      r|
j                  |d
d «       Œ)|
j                  |«       Œ; |j                  d«      rt        j                  |dd «      }n|j                  «       }t        |t        «      r|j                  d«      n|}|› d|› d|› �}t        j                   t#        j$                  ||j                  «       t&        j(                  «      j+                  «       «      j                  «       Št-        ˆfd„|
D «       «      st        d«      ‚y# t        $ r t        d«      d‚w xY w)r'   Nr(   r)   r*   r+   r,   r-   r.   r/   r   r0   r1   r2   r3   c              3  óJ   •K  — | ]  }t        j                  ‰|«      –— Œ y ­wr5   r6   r9   s     €r    r=   z1AsyncWebhooks.verify_signature.<locals>.<genexpr>Ñ   r>   r?   r@   rA   rT   s                  @r    r   zAsyncWebhooks.verify_signature�   sè  ø€ ð  ˆ>Ø—\‘\×0Ñ0ˆFàˆ>Üð`óð ðô
 /¨wÐ8KÓLÐÜ'¨Ð1DÓEˆ	Ü(¨°,Ó?ˆ
ð	]Ü # I£Ðô ”$—)‘)“+ÓˆàÐ"Ñ" YÒ.Ü.Ð/MÓNÐTXÐXà˜s Y™Ò.Ü.Ð/MÓNÐTXÐXð
 !#ˆ
Ø$×*Ñ*Ö,ˆDØ�‰˜uÔ%Ø×!Ñ! $ q r (Õ+à×!Ñ! $Õ'ð	 -ð ×Ñ˜XÔ&Ü#×-Ñ-¨f°Q°R¨jÓ9‰Nà#Ÿ]™]›_ˆNä*4°W¼eÔ*Dˆw�~‰~˜gÔ&È'ˆð '˜< q¨¨°1°T°FÐ;ˆÜ#×-Ñ-Ü�H‰H�^ ^×%:Ñ%:Ó%<¼g¿n¹nÓM×TÑTÓVó
ç
‰&‹(ð 	ô
 ÓVÉ:ÓVÔVÜ.Ð/rÓsÐsð WøôI ò 	]Ü.Ð/QÓRÐX\Ð\ð	]ús   ÁG ÇG*r_   rc   re   ri   r"   r    r   r   v   s{   „ ð "ñ
àð
ð ð
ð
 ð
ð 
ó
ð6 "ØñEtàðEtð ðEtð
 ðEtð ðEtð 
ôEtr"   )Ú
__future__r   r7   r   rD   rH   rP   Útypingr   Ú_typesr   Ú_utilsr   Ú_modelsr   Ú	_resourcer	   r
   Ú_exceptionsr   Ú#types.webhooks.unwrap_webhook_eventr   Ú__all__r   r   ri   r"   r    Ú<module>rw      sX   ðõ #ã Û Û Û Û Ý å !Ý )Ý %ß :Ý 7Ý Eà�Ð
'€ô]ˆô ]ô@\tÐ$õ \tr"   