Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions homeassistant/components/coinbase/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def setup(hass, config):

if not hasattr(coinbase_data, "accounts"):
return False
for account in coinbase_data.accounts.data:
for account in coinbase_data.accounts:
if account_currencies is None or account.currency in account_currencies:
load_platform(hass, "sensor", DOMAIN, {"account": account}, config)
for currency in exchange_currencies:
Expand Down Expand Up @@ -90,7 +90,21 @@ def update(self):
"""Get the latest data from coinbase."""

try:
self.accounts = self.client.get_accounts()
response = self.client.get_accounts()
accounts = response["data"]

# Most of Coinbase's API seems paginated now (25 items per page, but first page has 24).
# This API gives a 'next_starting_after' property to send back as a 'starting_after' param.
# Their API documentation is not up to date when writing these lines (2021-05-20)
next_starting_after = response.pagination.next_starting_after

while next_starting_after:
response = self.client.get_accounts(starting_after=next_starting_after)
accounts = accounts + response["data"]
next_starting_after = response.pagination.next_starting_after

self.accounts = accounts

self.exchange_rates = self.client.get_exchange_rates()
except AuthenticationError as coinbase_error:
_LOGGER.error(
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/coinbase/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def extra_state_attributes(self):
def update(self):
"""Get the latest state of the sensor."""
self._coinbase_data.update()
for account in self._coinbase_data.accounts["data"]:
for account in self._coinbase_data.accounts:
if self._name == f"Coinbase {account['name']}":
self._state = account["balance"]["amount"]
self._native_balance = account["native_balance"]["amount"]
Expand Down