mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-03 12:20:38 +08:00
Merge pull request #710 from Codium-ai/tr/direct_link_bug
Refactor link generation in github_provider.py to use get_pr_url method
This commit is contained in:
@ -24,6 +24,8 @@ class GithubProvider(GitProvider):
|
|||||||
self.installation_id = context.get("installation_id", None)
|
self.installation_id = context.get("installation_id", None)
|
||||||
except Exception:
|
except Exception:
|
||||||
self.installation_id = None
|
self.installation_id = None
|
||||||
|
self.base_url = get_settings().get("GITHUB.BASE_URL", "https://api.github.com").rstrip("/")
|
||||||
|
self.base_url_html = self.base_url.split("api")[0].rstrip("/") if "api" in self.base_url else "https://github.com"
|
||||||
self.github_client = self._get_github_client()
|
self.github_client = self._get_github_client()
|
||||||
self.repo = None
|
self.repo = None
|
||||||
self.pr_num = None
|
self.pr_num = None
|
||||||
@ -412,7 +414,7 @@ class GithubProvider(GitProvider):
|
|||||||
try:
|
try:
|
||||||
# self.pr.get_issue_comment(comment_id).edit(body)
|
# self.pr.get_issue_comment(comment_id).edit(body)
|
||||||
headers, data_patch = self.pr._requester.requestJsonAndCheck(
|
headers, data_patch = self.pr._requester.requestJsonAndCheck(
|
||||||
"POST", f"https://api.github.com/repos/{self.repo}/pulls/{self.pr_num}/comments/{comment_id}/replies",
|
"POST", f"{self.base_url}/repos/{self.repo}/pulls/{self.pr_num}/comments/{comment_id}/replies",
|
||||||
input={"body": body}
|
input={"body": body}
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -481,7 +483,7 @@ class GithubProvider(GitProvider):
|
|||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
headers, data_patch = self.pr._requester.requestJsonAndCheck(
|
headers, data_patch = self.pr._requester.requestJsonAndCheck(
|
||||||
"POST", f"https://api.github.com/repos/{self.repo}/issues/comments/{issue_comment_id}/reactions",
|
"POST", f"{self.base_url}/repos/{self.repo}/issues/comments/{issue_comment_id}/reactions",
|
||||||
input={"content": "eyes"}
|
input={"content": "eyes"}
|
||||||
)
|
)
|
||||||
return data_patch.get("id", None)
|
return data_patch.get("id", None)
|
||||||
@ -494,7 +496,7 @@ class GithubProvider(GitProvider):
|
|||||||
# self.pr.get_issue_comment(issue_comment_id).delete_reaction(reaction_id)
|
# self.pr.get_issue_comment(issue_comment_id).delete_reaction(reaction_id)
|
||||||
headers, data_patch = self.pr._requester.requestJsonAndCheck(
|
headers, data_patch = self.pr._requester.requestJsonAndCheck(
|
||||||
"DELETE",
|
"DELETE",
|
||||||
f"https://api.github.com/repos/{self.repo}/issues/comments/{issue_comment_id}/reactions/{reaction_id}"
|
f"{self.base_url}/repos/{self.repo}/issues/comments/{issue_comment_id}/reactions/{reaction_id}"
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -572,7 +574,7 @@ class GithubProvider(GitProvider):
|
|||||||
raise ValueError("GitHub app installation ID is required when using GitHub app deployment")
|
raise ValueError("GitHub app installation ID is required when using GitHub app deployment")
|
||||||
auth = AppAuthentication(app_id=app_id, private_key=private_key,
|
auth = AppAuthentication(app_id=app_id, private_key=private_key,
|
||||||
installation_id=self.installation_id)
|
installation_id=self.installation_id)
|
||||||
return Github(app_auth=auth, base_url=get_settings().github.base_url)
|
return Github(app_auth=auth, base_url=self.base_url)
|
||||||
|
|
||||||
if deployment_type == 'user':
|
if deployment_type == 'user':
|
||||||
try:
|
try:
|
||||||
@ -581,7 +583,7 @@ class GithubProvider(GitProvider):
|
|||||||
raise ValueError(
|
raise ValueError(
|
||||||
"GitHub token is required when using user deployment. See: "
|
"GitHub token is required when using user deployment. See: "
|
||||||
"https://github.com/Codium-ai/pr-agent#method-2-run-from-source") from e
|
"https://github.com/Codium-ai/pr-agent#method-2-run-from-source") from e
|
||||||
return Github(auth=Auth.Token(token), base_url=get_settings().github.base_url)
|
return Github(auth=Auth.Token(token), base_url=self.base_url)
|
||||||
|
|
||||||
def _get_repo(self):
|
def _get_repo(self):
|
||||||
if hasattr(self, 'repo_obj') and \
|
if hasattr(self, 'repo_obj') and \
|
||||||
@ -664,7 +666,7 @@ class GithubProvider(GitProvider):
|
|||||||
|
|
||||||
# link to diff
|
# link to diff
|
||||||
sha_file = hashlib.sha256(relevant_file.encode('utf-8')).hexdigest()
|
sha_file = hashlib.sha256(relevant_file.encode('utf-8')).hexdigest()
|
||||||
link = f"https://github.com/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}R{absolute_position}"
|
link = f"{self.base_url_html}/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}R{absolute_position}"
|
||||||
return link
|
return link
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if get_settings().config.verbosity_level >= 2:
|
if get_settings().config.verbosity_level >= 2:
|
||||||
@ -675,11 +677,11 @@ class GithubProvider(GitProvider):
|
|||||||
def get_line_link(self, relevant_file: str, relevant_line_start: int, relevant_line_end: int = None) -> str:
|
def get_line_link(self, relevant_file: str, relevant_line_start: int, relevant_line_end: int = None) -> str:
|
||||||
sha_file = hashlib.sha256(relevant_file.encode('utf-8')).hexdigest()
|
sha_file = hashlib.sha256(relevant_file.encode('utf-8')).hexdigest()
|
||||||
if relevant_line_start == -1:
|
if relevant_line_start == -1:
|
||||||
link = f"https://github.com/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}"
|
link = f"{self.base_url_html}/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}"
|
||||||
elif relevant_line_end:
|
elif relevant_line_end:
|
||||||
link = f"https://github.com/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}R{relevant_line_start}-R{relevant_line_end}"
|
link = f"{self.base_url_html}/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}R{relevant_line_start}-R{relevant_line_end}"
|
||||||
else:
|
else:
|
||||||
link = f"https://github.com/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}R{relevant_line_start}"
|
link = f"{self.base_url_html}/{self.repo}/pull/{self.pr_num}/files#diff-{sha_file}R{relevant_line_start}"
|
||||||
return link
|
return link
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user