diff --git a/backend/magic_plan/magic_plan_client.py b/backend/magic_plan/magic_plan_client.py new file mode 100644 index 00000000..ff99062d --- /dev/null +++ b/backend/magic_plan/magic_plan_client.py @@ -0,0 +1,22 @@ +import requests + +from datatypes.magicplan.api.response import MagicPlan, PlansListResponse + +_BASE_URL = "https://cloud.magicplan.app/api/v2" + + +class MagicPlanClient: + def __init__(self, customer_id: str, api_key: str) -> None: + self._api_key = api_key + self._session = requests.Session() + self._session.headers.update({"customer": customer_id}) + + def get_plans(self) -> PlansListResponse: + r = self._session.get(f"{_BASE_URL}/plans", params={"key": self._api_key}) + r.raise_for_status() + return PlansListResponse.model_validate(r.json()["data"]) + + def get_plan(self, plan_id: str) -> MagicPlan: + r = self._session.get(f"{_BASE_URL}/plans/{plan_id}", params={"key": self._api_key}) + r.raise_for_status() + return MagicPlan.model_validate(r.json()["data"]) diff --git a/backend/magic_plan/tests/test_magic_plan_client.py b/backend/magic_plan/tests/test_magic_plan_client.py index f8f35432..02ae054c 100644 --- a/backend/magic_plan/tests/test_magic_plan_client.py +++ b/backend/magic_plan/tests/test_magic_plan_client.py @@ -26,7 +26,7 @@ def _make_client(mock_session: MagicMock) -> MagicPlanClient: @pytest.fixture() def mock_session() -> MagicMock: - return MagicMock(spec=requests.Session) + return MagicMock() @pytest.fixture()