diff --git a/.gitignore b/.gitignore index 7ddac6c..2dbb568 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ .env env/ +venv/ git-orca/git-orca.json git-orca/git-orca.txt git-orca/helpers/__pycache__ test.py -dist/ \ No newline at end of file +dist/ +__pycache__ diff --git a/git-orca/__init__.py b/git-orca/__init__.py index e69de29..784f59f 100644 --- a/git-orca/__init__.py +++ b/git-orca/__init__.py @@ -0,0 +1 @@ +from git_orca import GitOrca diff --git a/git-orca/git_orca.py b/git-orca/git_orca.py new file mode 100644 index 0000000..1046de2 --- /dev/null +++ b/git-orca/git_orca.py @@ -0,0 +1,49 @@ +import requests +from helpers.types import Selection, SelectionState + + +class GitOrca: + """ + Git-Orca + """ + def __init__(self, github_access_token: str = None): + """ + Initialize git-orca with github access token + """ + self.github_access_token = github_access_token + + def get_issues(self, repo_name: str, repo_owner: str, state: SelectionState = 'open', per_page: int = 20, page : int = 1): + """ + Get issues + """ + response = requests.get(f"https://api.github.com/repos/{repo_owner}/{repo_name}/issues", + headers={ + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "Authorization": f"Bearer {self.github_access_token}" + }, + params={ + "state": f"{state}", + "per_page": f"{per_page}", + "page": f"{page}" + } + ) + return response.json() + + def get_prs(self, repo_name: str, repo_owner: str, state: SelectionState = 'open', per_page: int = 20, page : int = 1): + """ + Get pull requests + """ + response = requests.get(f"https://api.github.com/repos/{repo_owner}/{repo_name}/pulls", + headers={ + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "Authorization": f"Bearer {self.github_access_token}" + }, + params={ + "state": f"{state}", + "per_page": f"{per_page}", + "page": f"{page}" + } + ) + return response.json() diff --git a/git-orca/helpers/__init__.py b/git-orca/helpers/__init__.py index e69de29..784f59f 100644 --- a/git-orca/helpers/__init__.py +++ b/git-orca/helpers/__init__.py @@ -0,0 +1 @@ +from git_orca import GitOrca diff --git a/git-orca/helpers/commands.py b/git-orca/helpers/commands.py index d284992..d4c9d58 100644 --- a/git-orca/helpers/commands.py +++ b/git-orca/helpers/commands.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 - -import requests, os, json from .creator import write_json_issues, write_txt_issues, write_json_pr, write_txt_pr +from . import GitOrca + def ask_question(question, type): pass + def CLI(token, args): print("\n<==> git-orca <==>\n") @@ -42,12 +43,16 @@ def CLI(token, args): page = int(input("\nWhat page do you want to view?\n")) if page < 1: page = "1" + else: + page = args['p'] per_page = None if args["pp"] == 0: per_page = int(input("\nHow many per page?\n")) if per_page < 1: per_page = "30" + else: + per_page = args['pp'] file_format = None if not args["json"] and not args["txt"]: @@ -57,19 +62,10 @@ def CLI(token, args): print("\nFetching...\n") - r = requests.get(f"https://api.github.com/repos/{owner}/{repo}/issues", - headers={ - "Accept": "application/vnd.github+json", - "X-GitHub-Api-Version": "2022-11-28", - "Authorization": f"Bearer {token}" - }, - params={ - "state": f"{state}", - "per_page": f"{per_page}", - "page": f"{page}" - } - ) - r = r.json() + if selection == 'issues': + r = GitOrca(token).get_issues(repo, owner, state, per_page, page) + else: + r = GitOrca(token).get_prs(repo, owner, state, per_page, page) print("\nDone fetching") @@ -102,4 +98,4 @@ def CLI(token, args): print(f"Found no {selection}'s here") if __name__ == "__main__": - CLI() \ No newline at end of file + CLI() diff --git a/git-orca/helpers/types.py b/git-orca/helpers/types.py new file mode 100644 index 0000000..0cc2dc7 --- /dev/null +++ b/git-orca/helpers/types.py @@ -0,0 +1,4 @@ +from typing import Literal + +Selection = Literal['issue', 'pr'] +SelectionState = Literal['open', 'closed', 'all'] diff --git a/git-orca/main.py b/git-orca/main.py index 710dde6..c686cdd 100644 --- a/git-orca/main.py +++ b/git-orca/main.py @@ -49,4 +49,4 @@ def get_args( main(os.getenv("TOKEN"), args_store) if __name__ == "__main__": - typer.run(get_args) \ No newline at end of file + typer.run(get_args)