from typing import Union

import requests

from ..models import Integration
from . import IntegrationParser


class TypeHttpParser(IntegrationParser):
    """
    Parse invocations to a APIGateway resource with integration type HTTP
    """

    def invoke(
        self, request: requests.PreparedRequest, integration: Integration
    ) -> tuple[int, Union[str, bytes]]:
        uri = integration.uri
        requests_func = getattr(requests, integration.http_method.lower())  # type: ignore[union-attr]
        response = requests_func(uri)
        return response.status_code, response.text
