Skip to content

Commit ec48739

Browse files
committed
feat(github): implement request_review to call GitHub API for PR review requests
Made-with: Cursor
1 parent f27ed1d commit ec48739

1 file changed

Lines changed: 32 additions & 2 deletions

File tree

src/ghdcbot/adapters/github/rest.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,39 @@ def unassign_issue(self, owner: str, repo: str, issue_number: int, assignee: str
202202
return False
203203

204204
def request_review(self, repo: str, pr_number: int, reviewer: str) -> None:
205+
"""Request a review on a pull request from the given reviewer (GitHub login)."""
206+
owner = self._org
205207
self._logger.info(
206-
"GitHub review request stub",
207-
extra={"repo": repo, "pr_number": pr_number, "reviewer": reviewer},
208+
"Requesting PR review",
209+
extra={"owner": owner, "repo": repo, "pr_number": pr_number, "reviewer": reviewer},
210+
)
211+
path = f"/repos/{owner}/{repo}/pulls/{pr_number}/requested_reviewers"
212+
payload = {"reviewers": [reviewer]}
213+
try:
214+
response = self._client.post(path, json=payload)
215+
except httpx.HTTPError as exc:
216+
self._logger.warning(
217+
"GitHub review request failed (network)",
218+
extra={"path": path, "error": str(exc)},
219+
)
220+
return
221+
if response.status_code in {200, 201}:
222+
self._logger.info(
223+
"PR review requested successfully",
224+
extra={"owner": owner, "repo": repo, "pr_number": pr_number, "reviewer": reviewer},
225+
)
226+
return
227+
error_body = (response.text or "")[:500]
228+
self._logger.warning(
229+
"GitHub review request failed (API)",
230+
extra={
231+
"owner": owner,
232+
"repo": repo,
233+
"pr_number": pr_number,
234+
"reviewer": reviewer,
235+
"status_code": response.status_code,
236+
"error_response": error_body,
237+
},
208238
)
209239

210240
def get_pull_request(self, owner: str, repo: str, pr_number: int) -> dict | None:

0 commit comments

Comments
 (0)