From af832e543491113a8aa4cd049e866ec783ee0b9c Mon Sep 17 00:00:00 2001
From: "J. Nick Koston" <nick@koston.org>
Date: Wed, 5 May 2021 23:47:44 -0500
Subject: [PATCH] Use shared httpx client in gogogate2 (#45575)

---
 CODEOWNERS                                        |  2 +-
 homeassistant/components/gogogate2/common.py      | 10 ++++++----
 homeassistant/components/gogogate2/config_flow.py |  6 +++---
 homeassistant/components/gogogate2/cover.py       |  2 +-
 homeassistant/components/gogogate2/manifest.json  |  4 ++--
 homeassistant/components/gogogate2/sensor.py      |  2 +-
 requirements_all.txt                              |  6 +++---
 requirements_test_all.txt                         |  6 +++---
 tests/components/gogogate2/test_config_flow.py    |  6 +++---
 tests/components/gogogate2/test_cover.py          |  4 ++--
 tests/components/gogogate2/test_init.py           |  2 +-
 tests/components/gogogate2/test_sensor.py         |  4 ++--
 12 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/CODEOWNERS b/CODEOWNERS
index ae71cde1754..f241832fb4e 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -179,7 +179,7 @@ homeassistant/components/gios/* @bieniu
 homeassistant/components/gitter/* @fabaff
 homeassistant/components/glances/* @fabaff @engrbm87
 homeassistant/components/goalzero/* @tkdrob
-homeassistant/components/gogogate2/* @vangorra
+homeassistant/components/gogogate2/* @vangorra @bdraco
 homeassistant/components/google_assistant/* @home-assistant/cloud
 homeassistant/components/google_cloud/* @lufton
 homeassistant/components/gpsd/* @fabaff
diff --git a/homeassistant/components/gogogate2/common.py b/homeassistant/components/gogogate2/common.py
index 8a51b210c5b..9345f8d5fed 100644
--- a/homeassistant/components/gogogate2/common.py
+++ b/homeassistant/components/gogogate2/common.py
@@ -6,8 +6,8 @@ from datetime import timedelta
 import logging
 from typing import Callable, NamedTuple
 
-from gogogate2_api import AbstractGateApi, GogoGate2Api, ISmartGateApi
-from gogogate2_api.common import AbstractDoor, get_door_by_id
+from ismartgate import AbstractGateApi, GogoGate2Api, ISmartGateApi
+from ismartgate.common import AbstractDoor, get_door_by_id
 
 from homeassistant.config_entries import ConfigEntry
 from homeassistant.const import (
@@ -18,6 +18,7 @@ from homeassistant.const import (
 )
 from homeassistant.core import HomeAssistant
 from homeassistant.helpers.debounce import Debouncer
+from homeassistant.helpers.httpx_client import get_async_client
 from homeassistant.helpers.update_coordinator import (
     CoordinatorEntity,
     DataUpdateCoordinator,
@@ -112,7 +113,7 @@ def get_data_update_coordinator(
     config_entry_data = hass.data[DOMAIN][config_entry.entry_id]
 
     if DATA_UPDATE_COORDINATOR not in config_entry_data:
-        api = get_api(config_entry.data)
+        api = get_api(hass, config_entry.data)
 
         async def async_update_data():
             try:
@@ -148,7 +149,7 @@ def sensor_unique_id(
     return f"{config_entry.unique_id}_{door.door_id}_{sensor_type}"
 
 
-def get_api(config_data: dict) -> AbstractGateApi:
+def get_api(hass: HomeAssistant, config_data: dict) -> AbstractGateApi:
     """Get an api object for config data."""
     gate_class = GogoGate2Api
 
@@ -159,4 +160,5 @@ def get_api(config_data: dict) -> AbstractGateApi:
         config_data[CONF_IP_ADDRESS],
         config_data[CONF_USERNAME],
         config_data[CONF_PASSWORD],
+        httpx_async_client=get_async_client(hass),
     )
diff --git a/homeassistant/components/gogogate2/config_flow.py b/homeassistant/components/gogogate2/config_flow.py
index aa6fa1988ea..94ac97a3ef2 100644
--- a/homeassistant/components/gogogate2/config_flow.py
+++ b/homeassistant/components/gogogate2/config_flow.py
@@ -2,8 +2,8 @@
 import dataclasses
 import re
 
-from gogogate2_api.common import AbstractInfoResponse, ApiError
-from gogogate2_api.const import GogoGate2ApiErrorCode, ISmartGateApiErrorCode
+from ismartgate.common import AbstractInfoResponse, ApiError
+from ismartgate.const import GogoGate2ApiErrorCode, ISmartGateApiErrorCode
 import voluptuous as vol
 
 from homeassistant.config_entries import SOURCE_IMPORT, ConfigFlow
@@ -55,7 +55,7 @@ class Gogogate2FlowHandler(ConfigFlow, domain=DOMAIN):
         errors = {}
 
         if user_input:
-            api = get_api(user_input)
+            api = get_api(self.hass, user_input)
             try:
                 data: AbstractInfoResponse = await api.async_info()
                 data_dict = dataclasses.asdict(data)
diff --git a/homeassistant/components/gogogate2/cover.py b/homeassistant/components/gogogate2/cover.py
index d6b7a8beb3b..0097198f1c2 100644
--- a/homeassistant/components/gogogate2/cover.py
+++ b/homeassistant/components/gogogate2/cover.py
@@ -3,7 +3,7 @@ from __future__ import annotations
 
 import logging
 
-from gogogate2_api.common import AbstractDoor, DoorStatus, get_configured_doors
+from ismartgate.common import AbstractDoor, DoorStatus, get_configured_doors
 
 from homeassistant.components.cover import (
     DEVICE_CLASS_GARAGE,
diff --git a/homeassistant/components/gogogate2/manifest.json b/homeassistant/components/gogogate2/manifest.json
index 519291c40d1..a4c07fa1fb8 100644
--- a/homeassistant/components/gogogate2/manifest.json
+++ b/homeassistant/components/gogogate2/manifest.json
@@ -3,8 +3,8 @@
   "name": "Gogogate2 and iSmartGate",
   "config_flow": true,
   "documentation": "https://www.home-assistant.io/integrations/gogogate2",
-  "requirements": ["gogogate2-api==3.0.0"],
-  "codeowners": ["@vangorra"],
+  "requirements": ["ismartgate==4.0.0"],
+  "codeowners": ["@vangorra", "@bdraco"],
   "homekit": {
     "models": ["iSmartGate"]
   },
diff --git a/homeassistant/components/gogogate2/sensor.py b/homeassistant/components/gogogate2/sensor.py
index 2d530d1b2f4..99edc855733 100644
--- a/homeassistant/components/gogogate2/sensor.py
+++ b/homeassistant/components/gogogate2/sensor.py
@@ -3,7 +3,7 @@ from __future__ import annotations
 
 from itertools import chain
 
-from gogogate2_api.common import AbstractDoor, get_configured_doors
+from ismartgate.common import AbstractDoor, get_configured_doors
 
 from homeassistant.components.sensor import SensorEntity
 from homeassistant.config_entries import ConfigEntry
diff --git a/requirements_all.txt b/requirements_all.txt
index cda78d652d8..727904fc6a3 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -671,9 +671,6 @@ gntp==1.0.3
 # homeassistant.components.goalzero
 goalzero==0.1.7
 
-# homeassistant.components.gogogate2
-gogogate2-api==3.0.0
-
 # homeassistant.components.google
 google-api-python-client==1.6.4
 
@@ -833,6 +830,9 @@ influxdb==5.2.3
 # homeassistant.components.iperf3
 iperf3==0.1.11
 
+# homeassistant.components.gogogate2
+ismartgate==4.0.0
+
 # homeassistant.components.rest
 jsonpath==0.82
 
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index f56c94e8c1b..f7a63940183 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -368,9 +368,6 @@ glances_api==0.2.0
 # homeassistant.components.goalzero
 goalzero==0.1.7
 
-# homeassistant.components.gogogate2
-gogogate2-api==3.0.0
-
 # homeassistant.components.google
 google-api-python-client==1.6.4
 
@@ -462,6 +459,9 @@ influxdb-client==1.14.0
 # homeassistant.components.influxdb
 influxdb==5.2.3
 
+# homeassistant.components.gogogate2
+ismartgate==4.0.0
+
 # homeassistant.components.rest
 jsonpath==0.82
 
diff --git a/tests/components/gogogate2/test_config_flow.py b/tests/components/gogogate2/test_config_flow.py
index 621ea4d5232..3cc70ddf7ab 100644
--- a/tests/components/gogogate2/test_config_flow.py
+++ b/tests/components/gogogate2/test_config_flow.py
@@ -1,9 +1,9 @@
 """Tests for the GogoGate2 component."""
 from unittest.mock import MagicMock, patch
 
-from gogogate2_api import GogoGate2Api
-from gogogate2_api.common import ApiError
-from gogogate2_api.const import GogoGate2ApiErrorCode
+from ismartgate import GogoGate2Api
+from ismartgate.common import ApiError
+from ismartgate.const import GogoGate2ApiErrorCode
 
 from homeassistant import config_entries, setup
 from homeassistant.components.gogogate2.const import (
diff --git a/tests/components/gogogate2/test_cover.py b/tests/components/gogogate2/test_cover.py
index 41b4368c640..3a044c33a94 100644
--- a/tests/components/gogogate2/test_cover.py
+++ b/tests/components/gogogate2/test_cover.py
@@ -2,8 +2,8 @@
 from datetime import timedelta
 from unittest.mock import MagicMock, patch
 
-from gogogate2_api import GogoGate2Api, ISmartGateApi
-from gogogate2_api.common import (
+from ismartgate import GogoGate2Api, ISmartGateApi
+from ismartgate.common import (
     ApiError,
     DoorMode,
     DoorStatus,
diff --git a/tests/components/gogogate2/test_init.py b/tests/components/gogogate2/test_init.py
index 7bcd2f8d2f2..1cfbf52284f 100644
--- a/tests/components/gogogate2/test_init.py
+++ b/tests/components/gogogate2/test_init.py
@@ -2,7 +2,7 @@
 import asyncio
 from unittest.mock import MagicMock, patch
 
-from gogogate2_api import GogoGate2Api
+from ismartgate import GogoGate2Api
 import pytest
 
 from homeassistant.components.gogogate2 import DEVICE_TYPE_GOGOGATE2, async_setup_entry
diff --git a/tests/components/gogogate2/test_sensor.py b/tests/components/gogogate2/test_sensor.py
index 020989c003a..5adc4532750 100644
--- a/tests/components/gogogate2/test_sensor.py
+++ b/tests/components/gogogate2/test_sensor.py
@@ -2,8 +2,8 @@
 from datetime import timedelta
 from unittest.mock import MagicMock, patch
 
-from gogogate2_api import GogoGate2Api, ISmartGateApi
-from gogogate2_api.common import (
+from ismartgate import GogoGate2Api, ISmartGateApi
+from ismartgate.common import (
     DoorMode,
     DoorStatus,
     GogoGate2ActivateResponse,
-- 
GitLab