|
from urllib.parse import urlparse |
|
from tools.utils import get_installation_id, get_installation_token, github_request |
|
|
|
def fetch_github_issue(issue_url): |
|
parsed = urlparse(issue_url) |
|
path_parts = parsed.path.strip('/').split('/') |
|
if len(path_parts) >= 4 and path_parts[2] == 'issues': |
|
owner = path_parts[0] |
|
repo = path_parts[1] |
|
issue_num = path_parts[3] |
|
return owner, repo, issue_num |
|
else: |
|
raise ValueError("Invalid GitHub Issue URL. Please provide a valid URL and try again.") |
|
|
|
|
|
def get_issue_details(owner, repo, issue_num): |
|
installation_id = get_installation_id(owner, repo) |
|
token = get_installation_token(installation_id) |
|
url = f"https://api.github.com/repos/{owner}/{repo}/issues/{issue_num}" |
|
headers = { |
|
"Authorization": f"Bearer {token}", |
|
"Accept": "application/vnd.github.v3+json" |
|
} |
|
response = github_request("GET", url, headers=headers) |
|
if response.status_code == 200: |
|
return response.json().get("body") |
|
else: |
|
raise Exception(f"Failed to fetch issue: {response.status_code}. The issue either doesn't exist or the URL is incorrect.") |
|
|
|
|
|
def post_comment(owner, repo, issue_num, comment_body): |
|
installation_id = get_installation_id(owner, repo) |
|
token = get_installation_token(installation_id) |
|
url = f"https://api.github.com/repos/{owner}/{repo}/issues/{issue_num}/comments" |
|
headers = { |
|
"Authorization": f"Bearer {token}", |
|
"Accept": "application/vnd.github.v3+json" |
|
} |
|
data = {"body": comment_body} |
|
response = github_request("POST", url, headers=headers, json=data) |
|
if response.status_code == 201: |
|
return response.json() |
|
else: |
|
raise Exception(f"Failed to post comment: {response.status_code}. The issue either doesn't exist or the URL is incorrect.") |
|
|