-
Notifications
You must be signed in to change notification settings - Fork 0
Route trailing slash compliance: Add trailing slashes to subresource ID paths #13
Copy link
Copy link
Open
Description
Problem
Per campus API conventions, subresource paths with ID parameters should have trailing slashes (e.g., /assignments/{assignment_id}/ instead of /assignments/{assignment_id}). The campus server is being updated to match this convention, and this client library needs to be updated accordingly.
Related issue: nyjc-computing/campus#407
API Methods to Fix
The following client methods call API endpoints that need trailing slashes added. This requires updating the make_path() calls to pass end_slash=True.
campus_python/api/v1/assignments.py
Assignments.Assignment class:
get()- Line 73-76- Current:
self.client.get(self.make_path()) - Fix:
self.client.get(self.make_path(end_slash=True))
- Current:
delete()- Line 68-71- Current:
self.client.delete(self.make_path()) - Fix:
self.client.delete(self.make_path(end_slash=True))
- Current:
update()- Line 78-81- Current:
self.client.patch(self.make_path(), json=updates) - Fix:
self.client.patch(self.make_path(end_slash=True), json=updates)
- Current:
campus_python/api/v1/submissions.py
Submissions.Submission class:
get()- Line 137-141- Current:
self.client.get(self.make_path()) - Fix:
self.client.get(self.make_path(end_slash=True))
- Current:
delete()- Line 131-135- Current:
self.client.delete(self.make_path()) - Fix:
self.client.delete(self.make_path(end_slash=True))
- Current:
update()- Line 170- Current:
self.client.patch(self.make_path(), json=payload) - Fix:
self.client.patch(self.make_path(end_slash=True), json=payload)
- Current:
Submissions class:
by_assignment()- Line 62- Current:
path = f"{self.make_path()}/by-assignment/{assignment_id}" - Fix:
path = f"{self.make_path()}/by-assignment/{assignment_id}/"
- Current:
by_student()- Line 79- Current:
path = f"{self.make_path()}/by-student/{student_id}" - Fix:
path = f"{self.make_path()}/by-student/{student_id}/"
- Current:
campus_python/api/v1/circles.py
Circles.Circle class:
get()- Line 56-59- Current:
self.client.get(self.make_path()) - Fix:
self.client.get(self.make_path(end_slash=True))
- Current:
delete()- Line 51-54- Current:
self.client.delete(self.make_path()) - Fix:
self.client.delete(self.make_path(end_slash=True))
- Current:
update()- Line 61-64- Current:
self.client.patch(self.make_path(), json=updates) - Fix:
self.client.patch(self.make_path(end_slash=True), json=updates)
- Current:
campus_python/auth/v1/credentials.py
Credentials.Provider.User class:
delete()- Line 61-68- Current:
self.client.delete(self.make_path(), json={"client_id": client_id}) - Fix:
self.client.delete(self.make_path(end_slash=True), json={"client_id": client_id})
- Current:
get()- Line 70-78- Current:
self.client.get(self.make_path(), query={"client_id": client_id}) - Fix:
self.client.get(self.make_path(end_slash=True), query={"client_id": client_id})
- Current:
update()- Line 95- Current:
self.client.patch(self.make_path(), json=json_data) - Fix:
self.client.patch(self.make_path(end_slash=True), json=json_data)
- Current:
campus_python/auth/v1/users.py
Users.User class:
delete()- Line 48-50- Current:
self.client.delete(self.make_path()) - Fix:
self.client.delete(self.make_path(end_slash=True))
- Current:
get()- Line 52-55- Current:
self.client.get(self.make_path()) - Fix:
self.client.get(self.make_path(end_slash=True))
- Current:
campus_python/auth/v1/vaults.py
Vaults.Vault class (methods use make_path(key)):
__delitem__()- Line 33- Current:
self.client.delete(self.make_path(key)) - Fix:
self.client.delete(self.make_path(key, end_slash=True))
- Current:
__getitem__()- Line 40- Current:
self.client.get(self.make_path(key)) - Fix:
self.client.get(self.make_path(key, end_slash=True))
- Current:
__setitem__()- Line 50- Current:
self.client.post(self.make_path(key), json={"value": value}) - Fix:
self.client.post(self.make_path(key, end_slash=True), json={"value": value})
- Current:
Tasks
- Update all 19 method calls listed above to use
end_slash=True - Update any tests that mock these API calls to expect trailing slashes
- Verify compatibility with the updated campus server routes
Notes
- Routes ending in verbs (e.g.,
/activate,/submit) do NOT need trailing slashes - Routes ending in subresource names (e.g.,
/links,/responses,/metadata) do NOT need trailing slashes
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels