Ë
    S>{ic  ã                   ó`  — 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	 e	rd dl
mZ dZdZd	j                  e«      Zd
j                  e«      ZdZdj                  e«      Z G d„ d«      Z G d„ d«      Z G d„ de«      Zej,                  ej.                  ej0                  ej2                  iZy)é    N)ÚIntegration)Úset_context)Úlogger)ÚTYPE_CHECKING)ÚDictÚcloud_resourcez169.254.169.254zhttp://{}/latest/api/tokenz3http://{}/latest/dynamic/instance-identity/documentzmetadata.google.internalz,http://{}/computeMetadata/v1/?recursive=truec                   ó(   — e Zd ZdZdZdZdZdZdZdZ	y)	ÚCLOUD_PROVIDERzˆ
    Name of the cloud provider.
    see https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/cloud/
    Úalibaba_cloudÚawsÚazureÚgcpÚ	ibm_cloudÚtencent_cloudN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚALIBABAÚAWSÚAZUREÚGCPÚIBMÚTENCENT© ó    úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/cloud_resource_context.pyr
   r
      s'   „ ñð
 €GØ
€CØ€EØ
€CØ
€CØ�Gr   r
   c                   ó   — e Zd ZdZdZdZy)ÚCLOUD_PLATFORMz€
    The cloud platform.
    see https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/cloud/
    Úaws_ec2Úgcp_compute_engineN)r   r   r   r   ÚAWS_EC2ÚGCP_COMPUTE_ENGINEr   r   r   r   r   *   s   „ ñð
 €GØ-Ñr   r   c                   óº   — e Zd ZdZdZdZdZ ej                  «       Z	dZ
dd„Zed„ «       Zed„ «       Zed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zy)ÚCloudResourceContextIntegrationz8
    Adds cloud resource context to the Senty scope
    ÚcloudresourcecontextÚ Nc                 ó   — |t         _        y )N)r%   Úcloud_provider)Úselfr)   s     r   Ú__init__z(CloudResourceContextIntegration.__init__B   s   € à9GÔ'Õ6r   c                 óÊ   — 	 | j                   j                  dt        ddi¬«      }|j                  dk7  ry|j                  j                  «       | _        y# t        $ r Y yw xY w)NÚPUTz$X-aws-ec2-metadata-token-ttl-secondsÚ60©ÚheaderséÈ   FT)ÚhttpÚrequestÚAWS_TOKEN_URLÚstatusÚdataÚdecodeÚ	aws_tokenÚ	Exception©ÚclsÚrs     r   Ú_is_awsz'CloudResourceContextIntegration._is_awsF   sd   € ð	Ø—‘× Ñ ØÜØ?ÀÐFð !ó ˆAð �x‰x˜3ŠØàŸF™FŸM™M›OˆCŒMØøäò 	Ùð	ús   ‚3A ¶A Á	A"Á!A"c                 ó6  — t         j                  t        j                  dœ}	 | j                  j                  dt        d| j                  i¬«      }|j                  dk7  r|S t        j                  |j                  j                  d«      «      }	 |d   |d<   	 |d	   |d
<   	 |d   |d<   	 |d   |d<   	 |d   |d<   |S # t        $ r Y Œ1w xY w# t        $ r Y Œ7w xY w# t        $ r Y Œ=w xY w# t        $ r Y ŒCw xY w# t        $ r Y |S w xY w# t        $ r Y |S w xY w)N©zcloud.providerzcloud.platformÚGETzX-aws-ec2-metadata-tokenr/   r1   úutf-8Ú	accountIdúcloud.account.idÚavailabilityZoneúcloud.availability_zoneÚregionúcloud.regionÚ
instanceIdúhost.idÚinstanceTypez	host.type)r
   r   r   r"   r2   r3   ÚAWS_METADATA_URLr8   r5   ÚjsonÚloadsr6   r7   r9   )r;   Úctxr<   r6   s       r   Ú_get_aws_contextz0CloudResourceContextIntegration._get_aws_contextY   se  € ô -×0Ñ0Ü,×4Ñ4ñ
ˆð
&	Ø—‘× Ñ ØÜ Ø3°S·]±]ÐCð !ó ˆAð �x‰x˜3ŠØ�
ä—:‘:˜aŸf™fŸm™m¨GÓ4Ó5ˆDðØ*.¨{Ñ*;�Ð&Ñ'ðØ15Ð6HÑ1I�Ð-Ñ.ðØ&*¨8¡n��NÑ#ðØ!% lÑ!3��I‘ðØ#'¨Ñ#7��KÑ ð ˆ
øô5 ò Ùðûô
 ò Ùðûô
 ò Ùðûô
 ò Ùðûô
 ò Øð
 ˆ
ðûô ò 	Øàˆ
ð	ús­   £>D Á".D ÂB? ÂC Â#C Â,C, Â5C; Â?	CÃD Ã
CÃD Ã	CÃD ÃCÃD Ã	C)Ã&D Ã(C)Ã)D Ã,	C8Ã5D Ã7C8Ã8D Ã;	DÄD ÄDÄD Ä	DÄDc                 óò   — 	 | j                   j                  dt        ddi¬«      }|j                  dk7  ryt	        j
                  |j                  j                  d«      «      | _        y# t        $ r Y yw xY w)	Nr@   úMetadata-FlavorÚGoogler/   r1   FrA   T)
r2   r3   ÚGCP_METADATA_URLr5   rL   rM   r6   r7   Úgcp_metadatar9   r:   s     r   Ú_is_gcpz'CloudResourceContextIntegration._is_gcp‹   sq   € ð	Ø—‘× Ñ ØÜ Ø*¨HÐ5ð !ó ˆAð �x‰x˜3ŠØä#Ÿz™z¨!¯&©&¯-©-¸Ó*@ÓAˆCÔØøäò 	Ùð	ús   ‚3A* ¶3A* Á*	A6Á5A6c                 óÄ  — t         j                  t        j                  dœ}	 | j                  €h| j
                  j                  dt        ddi¬«      }|j                  dk7  r|S t        j                  |j                  j                  d«      «      | _        	 | j                  d   d	   |d
<   	 | j                  d   d   j                  d«      d   |d<   	 | j                  d   d   j                  d«      d   |d<   	 | j                  d   d   |d<   |S # t        $ r Y Œsw xY w# t        $ r Y ŒZw xY w# t        $ r Y ŒAw xY w# t        $ r Y |S w xY w# t        $ r Y |S w xY w)Nr?   r@   rQ   rR   r/   r1   rA   ÚprojectÚ	projectIdrC   ÚinstanceÚzoneú/éÿÿÿÿrE   rF   rG   ÚidrI   )r
   r   r   r#   rT   r2   r3   rS   r5   rL   rM   r6   r7   r9   Úsplit)r;   rN   r<   s      r   Ú_get_gcp_contextz0CloudResourceContextIntegration._get_gcp_contextž   sœ  € ô -×0Ñ0Ü,×?Ñ?ñ
ˆð
'	Ø×ÑÐ'Ø—H‘H×$Ñ$ØÜ$Ø.°Ð9ð %ó �ð —8‘8˜s’?Ø�Jä#'§:¡:¨a¯f©f¯m©m¸GÓ.DÓ#E�Ô ðØ*-×*:Ñ*:¸9Ñ*EÀkÑ*R�Ð&Ñ'ðØ14×1AÑ1AÀ*Ñ1MØñ2ç‘%˜“*˜Rñ2!�Ð-Ñ.ðà&)×&6Ñ&6°zÑ&BÀ8Ñ&L×&RÑ&RÐSVÓ&WØñ'��NÑ#ðØ!$×!1Ñ!1°*Ñ!=¸dÑ!C��I‘ð ˆ
øô5 ò Ùðûô ò Ùðûô ò Ùðûô
 ò Øð
 ˆ
ðûô ò 	Øàˆ
ð	ús�   £A E Á$3E ÂD Â.'D$ Ã'D3 Ã>E Ä	D!ÄE Ä D!Ä!E Ä$	D0Ä-E Ä/D0Ä0E Ä3	D?Ä<E Ä>D?Ä?E Å	EÅE ÅEÅE Å	EÅEc                 ó„   — | j                  «       rt        j                  S | j                  «       rt        j                  S y©Nr'   )r=   r
   r   rU   r   )r;   s    r   Ú_get_cloud_providerz3CloudResourceContextIntegration._get_cloud_providerÑ   s1   € ð �;‰;Œ=Ü!×%Ñ%Ð%à�;‰;Œ=Ü!×%Ñ%Ð%àr   c                 óª   — | j                   dk7  r| j                   nt        j                  «       }|t        j	                  «       v rt        |   «       S i S ra   )r)   r%   rb   Úcontext_gettersÚkeys)r;   r)   s     r   Ú_get_cloud_resource_contextz;CloudResourceContextIntegration._get_cloud_resource_contextÜ   sT   € ð
 ×!Ñ! RÒ'ð ×Òä0×DÑDÓFð 	ð
 œ_×1Ñ1Ó3Ñ3Ü" >Ñ2Ó4Ð4àˆ	r   c                  ó6  — t         j                  } | dk7  xr | t        j                  «       v}|r@t	        j
                  dt         j                  t        t        j                  «       «      «       t         j                  «       }|i k7  rt        t        |«       y y )Nr'   zVInvalid value for cloud_provider: %s (must be in %s). Falling back to autodetection...)
r%   r)   rd   re   r   ÚwarningÚlistrf   r   ÚCONTEXT_TYPE)r)   Úunsupported_cloud_providerÚcontexts      r   Ú
setup_oncez*CloudResourceContextIntegration.setup_onceé   sƒ   € ô 9×GÑGˆà˜bÑ ÒQ ^¼?×;OÑ;OÓ;QÐ%Qð 	#ñ &Ü�N‰NØhÜ/×>Ñ>Ü”_×)Ñ)Ó+Ó,ôô 2×MÑMÓOˆØ�bŠ=Üœ gÕ.ð r   )r'   )r   r   r   r   Ú
identifierr)   r8   Úurllib3ÚPoolManagerr2   rT   r+   Úclassmethodr=   rO   rU   r_   rb   rf   Ústaticmethodrm   r   r   r   r%   r%   4   sÁ   „ ñð (€Jà€Nà€IØˆ7×ÑÓ €Dà€LóHð ñó ðð$ ñ/ó ð/ðb ñó ðð$ ñ0ó ð0ðd ñó ðð ñ
ó ð
ð ñ/ó ñ/r   r%   )rL   ro   Úsentry_sdk.integrationsr   Úsentry_sdk.apir   Úsentry_sdk.utilsr   Úsentry_sdk._typesr   Útypingr   rj   ÚAWS_METADATA_HOSTÚformatr4   rK   ÚGCP_METADATA_HOSTrS   r
   r   r%   r   rO   r   r_   rd   r   r   r   ú<module>r{      s»   ðÛ Û å /Ý &Ý #å +áÝð  €à%Ð Ø,×3Ñ3Ð4EÓF€ØH×OÑOØóÐ ð /Ð ØA×HÑHØóÐ ÷
ñ ÷.ñ .ôF/ kô F/ðX ×ÑÐ7×HÑHØ×ÑÐ7×HÑHð�r   