Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
supermeter / supermeter / managers / http_manager.py
Size: Mime:
try:
    from typing import Dict, Optional, Tuple

    from supertenant.superbrain import ActionDict, SpanID
except ImportError:
    pass

from supertenant import consts
from supertenant.supermeter.data import HTTPData
from supertenant.supermeter.managers.basic_manager import BaseManager


class HTTPManager(BaseManager):
    def __init__(self):
        # type: () -> None
        super(HTTPManager, self).__init__()

    @classmethod
    def open_span(cls, data):
        # type: (HTTPData) -> Tuple[Optional[SpanID], Optional[ActionDict], Optional[int]]
        span_type = data.get_span_type()
        if span_type is None:
            raise Exception("expected a span_type")
        return super(HTTPManager, cls).open_span_with_type(span_type, data)

    @classmethod
    def get_headers_overrides(cls, span_id):
        # type: (SpanID) -> Dict[str, str]
        headers_overrides = {}  # type: Dict[str, str]
        override_keys_string = super(HTTPManager, cls).get_span_label(
            span_id, consts.LABEL_SUPERTENANT_ACTION_OVERRIDE_HTTP_HEADERS
        )
        if override_keys_string is None or override_keys_string == "":
            return headers_overrides

        override_keys = override_keys_string.split(",")
        for override_key in override_keys:
            override_value = super(HTTPManager, cls).get_span_label(span_id, HTTPData.get_header_label(override_key))
            if override_value is not None and override_value != "":
                headers_overrides[override_key] = override_value
        return headers_overrides