github_issue / github.py
oluinioluwa814's picture
Create github.py
b92d917 verified
import os
import requests
import certifi
from dotenv import load_dotenv
import langchain
from langchain_core.documents import Document
load_dotenv()
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
def fetch_github_repo(owner, repo, endpiont):
"""Fetches a GitHub repository's details and returns it as a Document."""
url = f"https://api.github.com/repos/{owner}/{repo}/{endpiont}"
headers = {
"Authorization": f"token {GITHUB_TOKEN}",
"Accept": "application/vnd.github.v3+json",
}
response = requests.get(url, headers=headers, verify=certifi.where())
if response.status_code == 200:
data = response.json()
else:
print(f"Failed to fetch repository:", response.status_code)
return []
print(data)
return data
def fetch_github_issues(owner, repo):
data = fetch_github_repo(owner, repo, "issues")
return load_issues(data)
def load_issues(issues):
documents = []
for issue in issues:
content = f"Issue Title: {issue['title']}\nIssue Body: {issue['body']}\n"
metadata = {
"author": issue["user"]["login"],
"comments": issue["comments"],
"labels" : issue["labels"],
"issue_number": issue["number"],
"created_at": issue["created_at"],
"url": issue["html_url"],
}
data = issue['title']
if issue['body']:
data += "\n" + issue['body']
documents.append(Document(page_content=data, metadata=metadata))
return documents
owner = "Ini-design"
repo = "register"
endpoint = "issues"
fetch_github_repo(owner , repo, endpoint)