$55 GRAYBYTE WORDPRESS FILE MANAGER $11

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/cloudlinux/venv/lib/python3.11/site-packages/sentry_sdk/integrations/

HOME
Current File : /opt/cloudlinux/venv/lib/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

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
14 Aug 2025 9.24 PM
root / root
0755
__pycache__
--
14 Aug 2025 9.25 PM
root / root
0755
django
--
14 Aug 2025 9.24 PM
root / root
0755
grpc
--
14 Aug 2025 9.24 PM
root / root
0755
opentelemetry
--
14 Aug 2025 9.24 PM
root / root
0755
redis
--
14 Aug 2025 9.24 PM
root / root
0755
spark
--
14 Aug 2025 9.24 PM
root / root
0755
__init__.py
6.667 KB
17 Apr 2025 8.10 PM
root / root
0644
_wsgi_common.py
4.431 KB
17 Apr 2025 8.10 PM
root / root
0644
aiohttp.py
11.282 KB
17 Apr 2025 8.10 PM
root / root
0644
argv.py
0.94 KB
17 Apr 2025 8.10 PM
root / root
0644
arq.py
6.579 KB
17 Apr 2025 8.10 PM
root / root
0644
asgi.py
11.544 KB
17 Apr 2025 8.10 PM
root / root
0644
asyncio.py
2.978 KB
17 Apr 2025 8.10 PM
root / root
0644
atexit.py
1.803 KB
17 Apr 2025 8.10 PM
root / root
0644
aws_lambda.py
15.444 KB
17 Apr 2025 8.10 PM
root / root
0644
beam.py
5.556 KB
17 Apr 2025 8.10 PM
root / root
0644
boto3.py
4.436 KB
17 Apr 2025 8.10 PM
root / root
0644
bottle.py
6.319 KB
17 Apr 2025 8.10 PM
root / root
0644
celery.py
18.652 KB
17 Apr 2025 8.10 PM
root / root
0644
chalice.py
4.657 KB
17 Apr 2025 8.10 PM
root / root
0644
cloud_resource_context.py
6.597 KB
17 Apr 2025 8.10 PM
root / root
0644
dedupe.py
1.156 KB
17 Apr 2025 8.10 PM
root / root
0644
excepthook.py
2.207 KB
17 Apr 2025 8.10 PM
root / root
0644
executing.py
1.993 KB
17 Apr 2025 8.10 PM
root / root
0644
falcon.py
7.797 KB
17 Apr 2025 8.10 PM
root / root
0644
fastapi.py
4.391 KB
17 Apr 2025 8.10 PM
root / root
0644
flask.py
7.722 KB
17 Apr 2025 8.10 PM
root / root
0644
gcp.py
8.021 KB
17 Apr 2025 8.10 PM
root / root
0644
gnu_backtrace.py
2.861 KB
17 Apr 2025 8.10 PM
root / root
0644
httpx.py
4.888 KB
17 Apr 2025 8.10 PM
root / root
0644
huey.py
4.59 KB
17 Apr 2025 8.10 PM
root / root
0644
logging.py
8.966 KB
17 Apr 2025 8.10 PM
root / root
0644
loguru.py
2.979 KB
17 Apr 2025 8.10 PM
root / root
0644
modules.py
2.061 KB
17 Apr 2025 8.10 PM
root / root
0644
pure_eval.py
4.447 KB
17 Apr 2025 8.10 PM
root / root
0644
pymongo.py
5.866 KB
17 Apr 2025 8.10 PM
root / root
0644
pyramid.py
7.268 KB
17 Apr 2025 8.10 PM
root / root
0644
quart.py
7.204 KB
17 Apr 2025 8.10 PM
root / root
0644
rq.py
5.284 KB
17 Apr 2025 8.10 PM
root / root
0644
sanic.py
11.061 KB
17 Apr 2025 8.10 PM
root / root
0644
serverless.py
1.929 KB
17 Apr 2025 8.10 PM
root / root
0644
socket.py
2.876 KB
17 Apr 2025 8.10 PM
root / root
0644
sqlalchemy.py
4.145 KB
17 Apr 2025 8.10 PM
root / root
0644
starlette.py
22.667 KB
17 Apr 2025 8.10 PM
root / root
0644
starlite.py
9.853 KB
17 Apr 2025 8.10 PM
root / root
0644
stdlib.py
8.058 KB
17 Apr 2025 8.10 PM
root / root
0644
threading.py
2.868 KB
17 Apr 2025 8.10 PM
root / root
0644
tornado.py
7.17 KB
17 Apr 2025 8.10 PM
root / root
0644
trytond.py
1.704 KB
17 Apr 2025 8.10 PM
root / root
0644
wsgi.py
9.356 KB
17 Apr 2025 8.10 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF