SILENT KILLERPanel

Current Path: > > opt > cloudlinux > venv > lib64 > python3.11 > site-packages > sentry_sdk > integrations


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
django Directory - -
grpc Directory - -
opentelemetry Directory - -
redis Directory - -
spark Directory - -
__init__.py File 6827 bytes April 17 2025 13:10:59.
_wsgi_common.py File 4537 bytes April 17 2025 13:10:59.
aiohttp.py File 11553 bytes April 17 2025 13:10:59.
argv.py File 963 bytes April 17 2025 13:10:59.
arq.py File 6737 bytes April 17 2025 13:10:59.
asgi.py File 11821 bytes April 17 2025 13:10:59.
asyncio.py File 3049 bytes April 17 2025 13:10:59.
atexit.py File 1846 bytes April 17 2025 13:10:59.
aws_lambda.py File 15815 bytes April 17 2025 13:10:59.
beam.py File 5689 bytes April 17 2025 13:10:59.
boto3.py File 4542 bytes April 17 2025 13:10:59.
bottle.py File 6471 bytes April 17 2025 13:10:59.
celery.py File 19100 bytes April 17 2025 13:10:59.
chalice.py File 4769 bytes April 17 2025 13:10:59.
cloud_resource_context.py File 6755 bytes April 17 2025 13:10:59.
dedupe.py File 1184 bytes April 17 2025 13:10:59.
excepthook.py File 2260 bytes April 17 2025 13:10:59.
executing.py File 2041 bytes April 17 2025 13:10:59.
falcon.py File 7984 bytes April 17 2025 13:10:59.
fastapi.py File 4496 bytes April 17 2025 13:10:59.
flask.py File 7907 bytes April 17 2025 13:10:59.
gcp.py File 8213 bytes April 17 2025 13:10:59.
gnu_backtrace.py File 2930 bytes April 17 2025 13:10:59.
httpx.py File 5005 bytes April 17 2025 13:10:59.
huey.py File 4700 bytes April 17 2025 13:10:59.
logging.py File 9181 bytes April 17 2025 13:10:59.
loguru.py File 3051 bytes April 17 2025 13:10:59.
modules.py File 2110 bytes April 17 2025 13:10:59.
pure_eval.py File 4554 bytes April 17 2025 13:10:59.
pymongo.py File 6007 bytes April 17 2025 13:10:59.
pyramid.py File 7442 bytes April 17 2025 13:10:59.
quart.py File 7377 bytes April 17 2025 13:10:59.
rq.py File 5411 bytes April 17 2025 13:10:59.
sanic.py File 11326 bytes April 17 2025 13:10:59.
serverless.py File 1975 bytes April 17 2025 13:10:59.
socket.py File 2945 bytes April 17 2025 13:10:59.
sqlalchemy.py File 4244 bytes April 17 2025 13:10:59.
starlette.py File 23211 bytes April 17 2025 13:10:59.
starlite.py File 10089 bytes April 17 2025 13:10:59.
stdlib.py File 8251 bytes April 17 2025 13:10:59.
threading.py File 2937 bytes April 17 2025 13:10:59.
tornado.py File 7342 bytes April 17 2025 13:10:59.
trytond.py File 1745 bytes April 17 2025 13:10:59.
wsgi.py File 9581 bytes April 17 2025 13:10:59.

Reading File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations/httpx.py

from sentry_sdk import Hub
from sentry_sdk.consts import OP, SPANDATA
from sentry_sdk.integrations import Integration, DidNotEnable
from sentry_sdk.tracing import BAGGAGE_HEADER_NAME
from sentry_sdk.tracing_utils import should_propagate_trace
from sentry_sdk.utils import (
    SENSITIVE_DATA_SUBSTITUTE,
    capture_internal_exceptions,
    logger,
    parse_url,
)

from sentry_sdk._types import TYPE_CHECKING

if TYPE_CHECKING:
    from typing import Any


try:
    from httpx import AsyncClient, Client, Request, Response  # type: ignore
except ImportError:
    raise DidNotEnable("httpx is not installed")

__all__ = ["HttpxIntegration"]


class HttpxIntegration(Integration):
    identifier = "httpx"

    @staticmethod
    def setup_once():
        # type: () -> None
        """
        httpx has its own transport layer and can be customized when needed,
        so patch Client.send and AsyncClient.send to support both synchronous and async interfaces.
        """
        _install_httpx_client()
        _install_httpx_async_client()


def _install_httpx_client():
    # type: () -> None
    real_send = Client.send

    def send(self, request, **kwargs):
        # type: (Client, Request, **Any) -> Response
        hub = Hub.current
        if hub.get_integration(HttpxIntegration) is None:
            return real_send(self, request, **kwargs)

        parsed_url = None
        with capture_internal_exceptions():
            parsed_url = parse_url(str(request.url), sanitize=False)

        with hub.start_span(
            op=OP.HTTP_CLIENT,
            description="%s %s"
            % (
                request.method,
                parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE,
            ),
        ) as span:
            span.set_data(SPANDATA.HTTP_METHOD, request.method)
            if parsed_url is not None:
                span.set_data("url", parsed_url.url)
                span.set_data(SPANDATA.HTTP_QUERY, parsed_url.query)
                span.set_data(SPANDATA.HTTP_FRAGMENT, parsed_url.fragment)

            if should_propagate_trace(hub, str(request.url)):
                for key, value in hub.iter_trace_propagation_headers():
                    logger.debug(
                        "[Tracing] Adding `{key}` header {value} to outgoing request to {url}.".format(
                            key=key, value=value, url=request.url
                        )
                    )
                    if key == BAGGAGE_HEADER_NAME and request.headers.get(
                        BAGGAGE_HEADER_NAME
                    ):
                        # do not overwrite any existing baggage, just append to it
                        request.headers[key] += "," + value
                    else:
                        request.headers[key] = value

            rv = real_send(self, request, **kwargs)

            span.set_http_status(rv.status_code)
            span.set_data("reason", rv.reason_phrase)

            return rv

    Client.send = send


def _install_httpx_async_client():
    # type: () -> None
    real_send = AsyncClient.send

    async def send(self, request, **kwargs):
        # type: (AsyncClient, Request, **Any) -> Response
        hub = Hub.current
        if hub.get_integration(HttpxIntegration) is None:
            return await real_send(self, request, **kwargs)

        parsed_url = None
        with capture_internal_exceptions():
            parsed_url = parse_url(str(request.url), sanitize=False)

        with hub.start_span(
            op=OP.HTTP_CLIENT,
            description="%s %s"
            % (
                request.method,
                parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE,
            ),
        ) as span:
            span.set_data(SPANDATA.HTTP_METHOD, request.method)
            if parsed_url is not None:
                span.set_data("url", parsed_url.url)
                span.set_data(SPANDATA.HTTP_QUERY, parsed_url.query)
                span.set_data(SPANDATA.HTTP_FRAGMENT, parsed_url.fragment)

            if should_propagate_trace(hub, str(request.url)):
                for key, value in hub.iter_trace_propagation_headers():
                    logger.debug(
                        "[Tracing] Adding `{key}` header {value} to outgoing request to {url}.".format(
                            key=key, value=value, url=request.url
                        )
                    )
                    if key == BAGGAGE_HEADER_NAME and request.headers.get(
                        BAGGAGE_HEADER_NAME
                    ):
                        # do not overwrite any existing baggage, just append to it
                        request.headers[key] += "," + value
                    else:
                        request.headers[key] = value

            rv = await real_send(self, request, **kwargs)

            span.set_http_status(rv.status_code)
            span.set_data("reason", rv.reason_phrase)

            return rv

    AsyncClient.send = send

SILENT KILLER Tool