def test_tracer_custom_metadata(mocker, dummy_response, provider_stub):
    put_metadata_mock = mocker.MagicMock()
    annotation_key = "Booking response"
    annotation_value = {"bookingStatus": "CONFIRMED"}

    provider = provider_stub(put_metadata_mock=put_metadata_mock)
    tracer = Tracer(provider=provider, service="booking")
    tracer.put_metadata(annotation_key, annotation_value)

    assert put_metadata_mock.call_count == 1
    assert put_metadata_mock.call_args_list[0] == mocker.call(
        key=annotation_key, value=annotation_value, namespace="booking")
예제 #2
0
import requests
import six
from ask_sdk_core.exceptions import ApiClientException
from ask_sdk_model.services import ApiClient, ApiClientRequest, ApiClientResponse
from aws_lambda_powertools.logging import Logger
from aws_lambda_powertools.tracing import Tracer
from urllib3.util import parse_url

from .token_helper import TokenHelper

logger = Logger(service="STIB API client")
tracer = Tracer(service="STIB API client")
OPEN_DATA_API_ENDPOINT = environ["open_data_api_endpoint"]

tracer.put_metadata(key="open_data_api_endpoint", value=OPEN_DATA_API_ENDPOINT)


class OpenDataAPIClient(ApiClient):
    """OpenData API client implementation wrapping HTTP requests"""

    def __init__(self):
        self.token_helper = TokenHelper()

    def invoke(self, request):
        # type: (ApiClientRequest) -> ApiClientResponse
        """Dispatches a request to an API endpoint described in the
        request.

        Resolves the method from input request object, converts the
        list of header tuples to the required format (dict) for the