Skip to content

Commit 13ffd02

Browse files
committed
etherscan: fix pagination
- Implement pagination check based on `check-source-etherscan` @apentori `next_page_token`
1 parent 8bfae3b commit 13ffd02

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

source-etherscan/source_etherscan/source.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,24 @@ def backoff_time(self, response: requests.Response) -> Optional[float]:
8282
return seconds
8383

8484
def next_page_token(self, response: requests.Response):
85-
result: list[dict] = response.json().get("result", [])
86-
if not result or not isinstance(result, list):
87-
return None
8885

86+
result: Union[list[dict], str] = response.json().get("result", [])
87+
8988
wallet_address = self.get_params(response).get("address")
9089
if not wallet_address:
9190
return None
9291

93-
if not self.is_valid(wallet_address, self.to_datetime(result[-1]["timeStamp"])):
92+
if isinstance(result, str):
93+
params = {
94+
"page": self.page_counter[wallet_address],
95+
"address": wallet_address
96+
}
97+
seconds = self.backoff_time(response)
98+
if seconds:
99+
time.sleep(seconds)
100+
return params
101+
102+
if not result or not self.is_valid(wallet_address, self.to_datetime(result[-1]["timeStamp"])):
94103
return None
95104

96105
self.page_counter[wallet_address] += 1

0 commit comments

Comments
 (0)