Skip to content

Commit a4d51c1

Browse files
committed
Update Paginator to accept a Context and path
1 parent a601c6f commit a4d51c1

File tree

4 files changed

+16
-20
lines changed

4 files changed

+16
-20
lines changed

src/posit/connect/groups.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,7 @@ def find(self) -> list[User]:
219219
from .users import User
220220

221221
path = f"v1/groups/{self._group_guid}/members"
222-
url = self._ctx.url + path
223-
paginator = Paginator(self._ctx.session, url)
222+
paginator = Paginator(self._ctx, path)
224223
member_dicts = paginator.fetch_results()
225224

226225
# For each member in the group
@@ -335,8 +334,7 @@ def find(self, **kwargs):
335334
* https://docs.posit.co/connect/api/#get-/v1/groups
336335
"""
337336
path = "v1/groups"
338-
url = self._ctx.url + path
339-
paginator = Paginator(self._ctx.session, url, params=kwargs)
337+
paginator = Paginator(self._ctx, path, params=kwargs)
340338
results = paginator.fetch_results()
341339
return [
342340
Group(
@@ -373,8 +371,7 @@ def find_one(self, **kwargs) -> Group | None:
373371
* https://docs.posit.co/connect/api/#get-/v1/groups
374372
"""
375373
path = "v1/groups"
376-
url = self._ctx.url + path
377-
paginator = Paginator(self._ctx.session, url, params=kwargs)
374+
paginator = Paginator(self._ctx, path, params=kwargs)
378375
pages = paginator.fetch_pages()
379376
results = (result for page in pages for result in page.results)
380377
groups = (

src/posit/connect/packages.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,7 @@ class _Fetch(TypedDict, total=False):
148148

149149
def fetch(self, **conditions: Unpack[_Fetch]) -> Generator["Package"]: # type: ignore
150150
# todo - add pagination support to ActiveSequence
151-
url = self._ctx.url + self._path
152-
paginator = Paginator(self._ctx.session, url, dict(**conditions))
151+
paginator = Paginator(self._ctx, self._path, dict(**conditions))
153152
for page in paginator.fetch_pages():
154153
results = page.results
155154
yield from (self._create_instance("", **result) for result in results)

src/posit/connect/paginator.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import TYPE_CHECKING, Generator, List
55

66
if TYPE_CHECKING:
7-
import requests
7+
from .context import Context
88

99
# The maximum page size supported by the API.
1010
_MAX_PAGE_SIZE = 500
@@ -43,15 +43,15 @@ class Paginator:
4343

4444
def __init__(
4545
self,
46-
session: requests.Session,
47-
url: str,
46+
ctx: Context,
47+
path: str,
4848
params: dict | None = None,
4949
) -> None:
5050
if params is None:
5151
params = {}
52-
self.session = session
53-
self.url = url
54-
self.params = params
52+
self._ctx = ctx
53+
self._path = path
54+
self._params = params
5555

5656
def fetch_results(self) -> List[dict]:
5757
"""
@@ -106,9 +106,9 @@ def fetch_page(self, page_number: int) -> Page:
106106
107107
"""
108108
params = {
109-
**self.params,
109+
**self._params,
110110
"page_number": page_number,
111111
"page_size": _MAX_PAGE_SIZE,
112112
}
113-
response = self.session.get(self.url, params=params)
113+
response = self._ctx.client.get(self._path, params=params)
114114
return Page(**response.json())

src/posit/connect/users.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,8 @@ def find(self, **conditions: Unpack[FindUser]) -> List[User]:
431431
--------
432432
* https://docs.posit.co/connect/api/#get-/v1/users
433433
"""
434-
url = self._ctx.url + "v1/users"
435-
paginator = Paginator(self._ctx.session, url, params={**conditions})
434+
path = "v1/users"
435+
paginator = Paginator(self._ctx, path, params={**conditions})
436436
results = paginator.fetch_results()
437437
return [
438438
User(
@@ -478,8 +478,8 @@ def find_one(self, **conditions: Unpack[FindUser]) -> User | None:
478478
--------
479479
* https://docs.posit.co/connect/api/#get-/v1/users
480480
"""
481-
url = self._ctx.url + "v1/users"
482-
paginator = Paginator(self._ctx.session, url, params={**conditions})
481+
path = "v1/users"
482+
paginator = Paginator(self._ctx, path, params={**conditions})
483483
pages = paginator.fetch_pages()
484484
results = (result for page in pages for result in page.results)
485485
users = (

0 commit comments

Comments
 (0)