Skip to content

Commit 8ff7dac

Browse files
Merge pull request #30 from nyjc-computing/feat/list-method
feat: Added list method functionality to API
2 parents 0f10a29 + d5afb57 commit 8ff7dac

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,4 @@ ehthumbs.db
253253
Thumbs.db
254254

255255
# Playwright auth state (contains session cookies/tokens)
256-
.playwright_auth_state.json
256+
.playwright_auth_state.json

campus_python/api/v1/timetable.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
Campus API timetable resource (v1).
44
"""
55

6+
import typing
7+
68
import campus.model
79

810
from ...interface import Resource, ResourceCollection
@@ -114,6 +116,22 @@ def new(self, metadata: dict, data: dict) -> dict:
114116
resp.raise_for_status()
115117
return resp.json()
116118

119+
def list(self, **filters: typing.Any) -> "list[campus.model.TimetableMetadata]":
120+
"""List timetables matching the provided filters.
121+
122+
Args:
123+
**filters: Arbitrary filter parameters applied to the query.
124+
125+
Returns:
126+
list[campus.model.TimetableMetadata]: Matching timetable metadata objects.
127+
"""
128+
resp = self.client.get(self.make_path(), query=filters if filters else None)
129+
resp.raise_for_status()
130+
return [
131+
campus.model.TimetableMetadata.from_resource(item)
132+
for item in resp.json()
133+
]
134+
117135
class Timetable(Resource):
118136
"""A single timetable with start date."""
119137

0 commit comments

Comments
 (0)