Skip to content

Commit 9d459d4

Browse files
committed
scroll_events now returns ScrollEventResult
1 parent 217cdbb commit 9d459d4

3 files changed

Lines changed: 13 additions & 87 deletions

File tree

src/flareio/api_client.py

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111

1212
import typing as t
1313

14-
from flareio._models import _ScrollEventsResult
1514
from flareio._ratelimit import _Limiter
1615
from flareio.exceptions import TokenError
16+
from flareio.models import ScrollEventsResult
1717
from flareio.version import __version__ as _flareio_version
1818

1919

@@ -285,7 +285,7 @@ def scroll(
285285
if json and from_in_json:
286286
json["from"] = next_page
287287

288-
def _scroll_events_items(
288+
def scroll_events(
289289
self,
290290
*,
291291
method: t.Literal[
@@ -298,7 +298,7 @@ def _scroll_events_items(
298298
json: t.Optional[t.Dict[str, t.Any]] = None,
299299
_pages_limiter: t.Optional[_Limiter] = None,
300300
_events_limiter: t.Optional[_Limiter] = None,
301-
) -> t.Iterator[_ScrollEventsResult]:
301+
) -> t.Iterator[ScrollEventsResult]:
302302
pages_limiter: _Limiter = _pages_limiter or _Limiter(
303303
tick_interval=timedelta(seconds=1),
304304
)
@@ -330,40 +330,10 @@ def _scroll_events_items(
330330
event_resp.raise_for_status()
331331
event: dict = event_resp.json()
332332

333-
yield _ScrollEventsResult(
334-
item=event_item,
335-
data=event,
333+
yield ScrollEventsResult(
334+
metadata=event_item,
335+
event=event,
336336
next=page_next,
337337
)
338338

339339
pages_limiter.tick()
340-
341-
def scroll_events(
342-
self,
343-
*,
344-
method: t.Literal[
345-
"GET",
346-
"POST",
347-
],
348-
pages_url: str,
349-
events_url: str,
350-
params: t.Optional[t.Dict[str, t.Any]] = None,
351-
json: t.Optional[t.Dict[str, t.Any]] = None,
352-
_pages_limiter: t.Optional[_Limiter] = None,
353-
_events_limiter: t.Optional[_Limiter] = None,
354-
) -> t.Iterator[
355-
t.Tuple[
356-
dict,
357-
t.Optional[str],
358-
],
359-
]:
360-
for result in self._scroll_events_items(
361-
method=method,
362-
pages_url=pages_url,
363-
events_url=events_url,
364-
params=params,
365-
json=json,
366-
_pages_limiter=_pages_limiter,
367-
_events_limiter=_events_limiter,
368-
):
369-
yield result.data, result.next
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
@dataclasses.dataclass(frozen=True)
5-
class _ScrollEventsResult:
6-
item: dict
7-
data: dict
5+
class ScrollEventsResult:
6+
metadata: dict
7+
event: dict
88
next: str | None

tests/test_api_client_scroll_events.py

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@ def test_scroll_events() -> None:
4545
status_code=200,
4646
)
4747

48-
event, cursor = next(events_iterator)
48+
result = next(events_iterator)
4949
assert len(mocker.request_history) == 2
50-
assert event == {"event": "hello"}
51-
assert cursor == "second_page"
50+
assert result.metadata == {"metadata": {"uid": "first_event_uid"}}
51+
assert result.event == {"event": "hello"}
52+
assert result.next == "second_page"
5253

5354
# Last page
5455
with requests_mock.Mocker() as mocker:
@@ -63,48 +64,3 @@ def test_scroll_events() -> None:
6364
with pytest.raises(StopIteration):
6465
next(events_iterator)
6566
assert len(mocker.request_history) == 1
66-
67-
68-
def test_scroll_events_items() -> None:
69-
"""
70-
scroll_events_metadata is used by the flareio-cli
71-
"""
72-
api_client = get_test_client()
73-
no_limit: _Limiter = _Limiter._unlimited()
74-
75-
events_iterator = api_client._scroll_events_items(
76-
method="GET",
77-
pages_url="https://api.flare.io/pages",
78-
events_url="https://api.flare.io/events",
79-
params={
80-
"from": None,
81-
},
82-
_pages_limiter=no_limit,
83-
_events_limiter=no_limit,
84-
)
85-
86-
# First page
87-
with requests_mock.Mocker() as mocker:
88-
mocker.register_uri(
89-
"GET",
90-
"https://api.flare.io/pages",
91-
json={
92-
"items": [
93-
{"metadata": {"uid": "first_event_uid"}},
94-
],
95-
"next": "second_page",
96-
},
97-
status_code=200,
98-
)
99-
mocker.register_uri(
100-
"GET",
101-
"https://api.flare.io/events",
102-
json={"event": "hello"},
103-
status_code=200,
104-
)
105-
106-
result = next(events_iterator)
107-
assert len(mocker.request_history) == 2
108-
assert result.item == {"metadata": {"uid": "first_event_uid"}}
109-
assert result.data == {"event": "hello"}
110-
assert result.next == "second_page"

0 commit comments

Comments
 (0)