Nir Diwakar (Nir)
08/30/2024, 3:10 PM{
"events": [],
"nextCursor": "AAGxMwAAAZGg69ZzAAAAAAAAAAAAAAAAAAAAAA",
"moreEvents": true,
"cursorExpired": false
}
In this case there are more events, but meltano won't be requesting for next page since there are no events.
How to force meltano to keep making requests until we have "moreEvents" false.
This is the current paginatior implementation:
class EgnytePaginator(BaseAPIPaginator):
def get_next(self, response: Response) -> Optional[str]:
moreEvents = response.json().get("moreEvents")
if moreEvents is False:
return None
return response.json().get("nextCursor")
client.py get_url_params
def get_url_params(
self,
context: Context | None, # noqa: ARG002
next_page_token: Any | None, # noqa: ANN401
) -> dict[str, Any]:
params: dict = {}
if next_page_token:
logging.info(f'Next token: {next_page_token}')
params["nextCursor"] = next_page_token
return params
params["startDate"] = self.start_time
Andy Carter
08/30/2024, 3:27 PMhas_more
?
https://github.com/meltano/sdk/blob/0e2df68fcc9e90823fd6a3dedad002da1e9f7404/singer_sdk/pagination.py#L127Nir Diwakar (Nir)
09/02/2024, 2:49 AM2024-08-30 17:26:38,122 | INFO | root | Parsed 0 events from response
2024-08-30 17:26:38,123 | INFO | root | More events: True
2024-08-30 17:26:38,123 | INFO | root | Next cursor: AAGxMwAAAZGIACLgAAAAAAAAAAAAAAAAAAAAAA
2024-08-30 17:26:38,123 | INFO | tap-egnyte.auth_events | Pagination stopped after 0 pages because no records were found in the last response
Edgar Ramírez (Arch.dev)
09/02/2024, 4:06 AMNir Diwakar (Nir)
09/02/2024, 12:04 PMdef parse_response(self, response: Response) -> Iterable[dict]:
data = response.json()
events = data.get("events", [])
if events:
for event in events:
yield event
elif data.get("moreEvents"):
# Yield None to indicate pagination should continue
yield {}
Edgar Ramírez (Arch.dev)
09/02/2024, 3:41 PM