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)