moving files around, pretty tables
This commit is contained in:
parent
4b7a4d6b5a
commit
40c1baa893
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
env/
|
env/
|
||||||
|
Session.vim
|
||||||
|
Session.nvim
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
27
api.py
Normal file
27
api.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import httpx
|
||||||
|
|
||||||
|
|
||||||
|
class API:
|
||||||
|
headers = {"Accept": "application/vnd.github.v3+json"}
|
||||||
|
|
||||||
|
def __init__(self, user_name: str) -> None:
|
||||||
|
self.user = self.load_user(user_name)
|
||||||
|
self.user_name = self.user["login"]
|
||||||
|
self.repos = self.load_repos() # TODO: Check if pagination
|
||||||
|
|
||||||
|
def _get(self, url: str) -> dict:
|
||||||
|
"""Uses httpx.Client().get to send the appropriate github headers, and return the url"""
|
||||||
|
with httpx.Client(headers=self.headers) as client:
|
||||||
|
return client.get(url).json()
|
||||||
|
|
||||||
|
def load_user(self, user_name: str) -> dict:
|
||||||
|
"""Sets the user object"""
|
||||||
|
return self._get(f"https://api.github.com/users/{user_name}")
|
||||||
|
|
||||||
|
def load_repo(self, repo_name: str) -> dict:
|
||||||
|
"""Set the repo object"""
|
||||||
|
return self._get(f"https://api.github.com/repos/{self.user_name}/{repo_name}")
|
||||||
|
|
||||||
|
def load_repos(self) -> dict:
|
||||||
|
"""Set the users repos"""
|
||||||
|
return self._get(f"https://api.github.com/users/{self.user_name}/repos")
|
28
api_tests.py
Normal file
28
api_tests.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import json
|
||||||
|
import pytest
|
||||||
|
from api import API
|
||||||
|
from pytest_httpx import HTTPXMock
|
||||||
|
|
||||||
|
|
||||||
|
def _load_user():
|
||||||
|
with open("./tests/fixtures/user.json", "r") as f:
|
||||||
|
return json.loads(f.read())
|
||||||
|
|
||||||
|
|
||||||
|
def _load_repos():
|
||||||
|
with open("./tests/fixtures/repos.json", "r") as f:
|
||||||
|
return json.loads(f.read())
|
||||||
|
|
||||||
|
|
||||||
|
def test_load_user(httpx_mock: HTTPXMock):
|
||||||
|
httpx_mock.add_response(method="GET", json=_load_user())
|
||||||
|
|
||||||
|
gh = API(user_name="tyrelsouza")
|
||||||
|
assert gh.user["login"] == "tyrelsouza"
|
||||||
|
|
||||||
|
def test_load_repos(httpx_mock: HTTPXMock):
|
||||||
|
httpx_mock.add_response(method="GET", json=_load_user())
|
||||||
|
httpx_mock.add_response(method="GET", json=_load_repos())
|
||||||
|
|
||||||
|
gh = API(user_name="tyrelsouza")
|
||||||
|
assert gh.repos[0]["git_url"] == "git://github.com/tyrelsouza/genealogy.git"
|
50
cli.py
50
cli.py
@ -1,47 +1,17 @@
|
|||||||
|
from ghub import GHub
|
||||||
|
from rich.prompt import Prompt
|
||||||
|
from rich import print
|
||||||
import httpx
|
import httpx
|
||||||
from pprint import pprint
|
|
||||||
|
|
||||||
|
|
||||||
class GHub:
|
|
||||||
headers = {"Accept": "application/vnd.github.v3+json"}
|
|
||||||
|
|
||||||
def __init__(self, user_name: str, repo_name: str):
|
|
||||||
self.user_name = user_name
|
|
||||||
self.repo_name = repo_name
|
|
||||||
|
|
||||||
def get(self, url: str) -> dict:
|
|
||||||
"""Uses httpx.Client().get to send the appropriate github headers, and return the url"""
|
|
||||||
with httpx.Client(headers=self.headers) as client:
|
|
||||||
return client.get(url).json()
|
|
||||||
|
|
||||||
def schema(self) -> dict:
|
|
||||||
"""Show all the schema that are available"""
|
|
||||||
return self.get("https://api.github.com")
|
|
||||||
|
|
||||||
def set_user(self):
|
|
||||||
self.user = self.get_user()
|
|
||||||
|
|
||||||
def get_user(self) -> dict:
|
|
||||||
"""Get the user object"""
|
|
||||||
return self.get(f"https://api.github.com/users/{self.user_name}")
|
|
||||||
|
|
||||||
def set_repo(self):
|
|
||||||
self.repo = self.get_repo()
|
|
||||||
|
|
||||||
def get_repo(self) -> dict:
|
|
||||||
"""Get the repo object"""
|
|
||||||
return self.get(f"https://api.github.com/repos/{self.user_name}/{self.repo_name}")
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
gh = GHub(user_name="tyrelsouza", repo_name="work_sample")
|
user_name = Prompt.ask("Username?")
|
||||||
# pprint(gh.schema())
|
gh = GHub()
|
||||||
pprint(
|
gh.load_user(user_name=user_name)
|
||||||
(
|
print(gh.repos_table())
|
||||||
gh.get_user(),
|
|
||||||
gh.get_repo(),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
41
ghub.py
Normal file
41
ghub.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from rich.table import Table
|
||||||
|
from rich.prompt import Prompt
|
||||||
|
from rich import print
|
||||||
|
from api import API
|
||||||
|
|
||||||
|
|
||||||
|
class GHub:
|
||||||
|
user = None
|
||||||
|
repos = None
|
||||||
|
|
||||||
|
def load_user(self, user_name: str) -> None:
|
||||||
|
self.user_name = user_name
|
||||||
|
self.api = API(self.user_name)
|
||||||
|
self.user = self.api.user
|
||||||
|
self.repos = self.api.repos
|
||||||
|
|
||||||
|
def repos_trimmed(self) -> list:
|
||||||
|
for repo in self.repos:
|
||||||
|
yield [
|
||||||
|
str(f)
|
||||||
|
for f in [
|
||||||
|
repo["name"],
|
||||||
|
repo["description"],
|
||||||
|
repo["stargazers_count"],
|
||||||
|
repo["watchers_count"],
|
||||||
|
repo["forks_count"],
|
||||||
|
repo["open_issues_count"],
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
def repos_table(self) -> Table:
|
||||||
|
table = Table(show_header=True, header_style="bold magenta")
|
||||||
|
table.add_column("Name")
|
||||||
|
table.add_column("Description")
|
||||||
|
table.add_column("Stargazers")
|
||||||
|
table.add_column("Watchers")
|
||||||
|
table.add_column("Forks")
|
||||||
|
table.add_column("Open Issues")
|
||||||
|
for repo in self.repos_trimmed():
|
||||||
|
table.add_row(*repo)
|
||||||
|
return table
|
22
ghub_tests.py
Normal file
22
ghub_tests.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import json
|
||||||
|
import pytest
|
||||||
|
from ghub import GHub
|
||||||
|
|
||||||
|
def _load_user():
|
||||||
|
with open("./tests/fixtures/user.json", "r") as f:
|
||||||
|
return json.loads(f.read())
|
||||||
|
|
||||||
|
def _load_repos():
|
||||||
|
with open("./tests/fixtures/repos.json", "r") as f:
|
||||||
|
return json.loads(f.read())
|
||||||
|
|
||||||
|
def _fake_tyrel() -> GHub:
|
||||||
|
gh = GHub()
|
||||||
|
gh.user = _load_user()
|
||||||
|
gh.repos = _load_repos()
|
||||||
|
return gh
|
||||||
|
|
||||||
|
|
||||||
|
def test_load_repos():
|
||||||
|
gh = _fake_tyrel()
|
||||||
|
assert gh.repos[0]["git_url"] == "git://github.com/tyrelsouza/genealogy.git"
|
@ -4,3 +4,4 @@ black
|
|||||||
invoke
|
invoke
|
||||||
pytest
|
pytest
|
||||||
pytest-httpx
|
pytest-httpx
|
||||||
|
rich
|
||||||
|
@ -18,6 +18,10 @@ click==8.0.3
|
|||||||
# via
|
# via
|
||||||
# black
|
# black
|
||||||
# pip-tools
|
# pip-tools
|
||||||
|
colorama==0.4.4
|
||||||
|
# via rich
|
||||||
|
commonmark==0.9.1
|
||||||
|
# via rich
|
||||||
h11==0.12.0
|
h11==0.12.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
httpcore==0.13.7
|
httpcore==0.13.7
|
||||||
@ -50,6 +54,8 @@ pluggy==1.0.0
|
|||||||
# via pytest
|
# via pytest
|
||||||
py==1.10.0
|
py==1.10.0
|
||||||
# via pytest
|
# via pytest
|
||||||
|
pygments==2.10.0
|
||||||
|
# via rich
|
||||||
pyparsing==2.4.7
|
pyparsing==2.4.7
|
||||||
# via packaging
|
# via packaging
|
||||||
pytest==6.2.5
|
pytest==6.2.5
|
||||||
@ -62,6 +68,8 @@ regex==2021.11.2
|
|||||||
# via black
|
# via black
|
||||||
rfc3986[idna2008]==1.5.0
|
rfc3986[idna2008]==1.5.0
|
||||||
# via httpx
|
# via httpx
|
||||||
|
rich==10.12.0
|
||||||
|
# via -r requirements.in
|
||||||
sniffio==1.2.0
|
sniffio==1.2.0
|
||||||
# via
|
# via
|
||||||
# anyio
|
# anyio
|
||||||
|
10
tasks.py
10
tasks.py
@ -1,8 +1,16 @@
|
|||||||
from invoke import task
|
from invoke import task
|
||||||
|
from cli import main
|
||||||
|
|
||||||
|
|
||||||
|
@task
|
||||||
|
def run(c):
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def test(c):
|
def test(c):
|
||||||
c.run("pytest tests.py --pdb")
|
c.run("pytest *_tests.py")
|
||||||
|
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def black(c):
|
def black(c):
|
||||||
|
29
tests.py
29
tests.py
@ -1,29 +0,0 @@
|
|||||||
import json
|
|
||||||
import pytest
|
|
||||||
from cli import GHub
|
|
||||||
from pytest_httpx import HTTPXMock
|
|
||||||
|
|
||||||
def _load_user():
|
|
||||||
with open("tests/user.json", "r") as f:
|
|
||||||
return json.loads(f.read())
|
|
||||||
|
|
||||||
def _load_repo():
|
|
||||||
with open("tests/repo.json", "r") as f:
|
|
||||||
return json.loads(f.read())
|
|
||||||
|
|
||||||
def test_user(httpx_mock: HTTPXMock):
|
|
||||||
httpx_mock.add_response(method="GET", json=_load_user())
|
|
||||||
|
|
||||||
gh = GHub(user_name="tyrelsouza", repo_name="work_sample")
|
|
||||||
gh.set_user()
|
|
||||||
assert(gh.user["login"] == "tyrelsouza")
|
|
||||||
|
|
||||||
def test_repo(httpx_mock: HTTPXMock):
|
|
||||||
httpx_mock.add_response(method="GET", json=_load_repo())
|
|
||||||
|
|
||||||
gh = GHub(user_name="tyrelsouza", repo_name="work_sample")
|
|
||||||
gh.set_repo()
|
|
||||||
breakpoint()
|
|
||||||
assert(gh.repo["login"] == "tyrelsouza2")
|
|
||||||
|
|
||||||
|
|
400
tests/fixtures/repos.json
vendored
Normal file
400
tests/fixtures/repos.json
vendored
Normal file
@ -0,0 +1,400 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 416199052,
|
||||||
|
"node_id": "R_kgDOGM6xjA",
|
||||||
|
"name": "genealogy",
|
||||||
|
"full_name": "tyrelsouza/genealogy",
|
||||||
|
"private": false,
|
||||||
|
"owner": {
|
||||||
|
"login": "tyrelsouza",
|
||||||
|
"id": 923113,
|
||||||
|
"node_id": "MDQ6VXNlcjkyMzExMw==",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/923113?v=4",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/tyrelsouza",
|
||||||
|
"html_url": "https://github.com/tyrelsouza",
|
||||||
|
"followers_url": "https://api.github.com/users/tyrelsouza/followers",
|
||||||
|
"following_url": "https://api.github.com/users/tyrelsouza/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/tyrelsouza/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/tyrelsouza/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/tyrelsouza/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/tyrelsouza/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/tyrelsouza/repos",
|
||||||
|
"events_url": "https://api.github.com/users/tyrelsouza/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/tyrelsouza/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"html_url": "https://github.com/tyrelsouza/genealogy",
|
||||||
|
"description": null,
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/tyrelsouza/genealogy",
|
||||||
|
"forks_url": "https://api.github.com/repos/tyrelsouza/genealogy/forks",
|
||||||
|
"keys_url": "https://api.github.com/repos/tyrelsouza/genealogy/keys{/key_id}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/tyrelsouza/genealogy/collaborators{/collaborator}",
|
||||||
|
"teams_url": "https://api.github.com/repos/tyrelsouza/genealogy/teams",
|
||||||
|
"hooks_url": "https://api.github.com/repos/tyrelsouza/genealogy/hooks",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/tyrelsouza/genealogy/issues/events{/number}",
|
||||||
|
"events_url": "https://api.github.com/repos/tyrelsouza/genealogy/events",
|
||||||
|
"assignees_url": "https://api.github.com/repos/tyrelsouza/genealogy/assignees{/user}",
|
||||||
|
"branches_url": "https://api.github.com/repos/tyrelsouza/genealogy/branches{/branch}",
|
||||||
|
"tags_url": "https://api.github.com/repos/tyrelsouza/genealogy/tags",
|
||||||
|
"blobs_url": "https://api.github.com/repos/tyrelsouza/genealogy/git/blobs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/tyrelsouza/genealogy/git/tags{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/tyrelsouza/genealogy/git/refs{/sha}",
|
||||||
|
"trees_url": "https://api.github.com/repos/tyrelsouza/genealogy/git/trees{/sha}",
|
||||||
|
"statuses_url": "https://api.github.com/repos/tyrelsouza/genealogy/statuses/{sha}",
|
||||||
|
"languages_url": "https://api.github.com/repos/tyrelsouza/genealogy/languages",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/tyrelsouza/genealogy/stargazers",
|
||||||
|
"contributors_url": "https://api.github.com/repos/tyrelsouza/genealogy/contributors",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/tyrelsouza/genealogy/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/tyrelsouza/genealogy/subscription",
|
||||||
|
"commits_url": "https://api.github.com/repos/tyrelsouza/genealogy/commits{/sha}",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/tyrelsouza/genealogy/git/commits{/sha}",
|
||||||
|
"comments_url": "https://api.github.com/repos/tyrelsouza/genealogy/comments{/number}",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/tyrelsouza/genealogy/issues/comments{/number}",
|
||||||
|
"contents_url": "https://api.github.com/repos/tyrelsouza/genealogy/contents/{+path}",
|
||||||
|
"compare_url": "https://api.github.com/repos/tyrelsouza/genealogy/compare/{base}...{head}",
|
||||||
|
"merges_url": "https://api.github.com/repos/tyrelsouza/genealogy/merges",
|
||||||
|
"archive_url": "https://api.github.com/repos/tyrelsouza/genealogy/{archive_format}{/ref}",
|
||||||
|
"downloads_url": "https://api.github.com/repos/tyrelsouza/genealogy/downloads",
|
||||||
|
"issues_url": "https://api.github.com/repos/tyrelsouza/genealogy/issues{/number}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/tyrelsouza/genealogy/pulls{/number}",
|
||||||
|
"milestones_url": "https://api.github.com/repos/tyrelsouza/genealogy/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/tyrelsouza/genealogy/notifications{?since,all,participating}",
|
||||||
|
"labels_url": "https://api.github.com/repos/tyrelsouza/genealogy/labels{/name}",
|
||||||
|
"releases_url": "https://api.github.com/repos/tyrelsouza/genealogy/releases{/id}",
|
||||||
|
"deployments_url": "https://api.github.com/repos/tyrelsouza/genealogy/deployments",
|
||||||
|
"created_at": "2021-10-12T05:38:27Z",
|
||||||
|
"updated_at": "2021-10-12T05:38:32Z",
|
||||||
|
"pushed_at": "2021-10-12T05:38:29Z",
|
||||||
|
"git_url": "git://github.com/tyrelsouza/genealogy.git",
|
||||||
|
"ssh_url": "git@github.com:tyrelsouza/genealogy.git",
|
||||||
|
"clone_url": "https://github.com/tyrelsouza/genealogy.git",
|
||||||
|
"svn_url": "https://github.com/tyrelsouza/genealogy",
|
||||||
|
"homepage": null,
|
||||||
|
"size": 67,
|
||||||
|
"stargazers_count": 0,
|
||||||
|
"watchers_count": 0,
|
||||||
|
"language": null,
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_downloads": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"forks_count": 0,
|
||||||
|
"mirror_url": null,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"open_issues_count": 0,
|
||||||
|
"license": null,
|
||||||
|
"allow_forking": true,
|
||||||
|
"is_template": false,
|
||||||
|
"topics": [],
|
||||||
|
"visibility": "public",
|
||||||
|
"forks": 0,
|
||||||
|
"open_issues": 0,
|
||||||
|
"watchers": 0,
|
||||||
|
"default_branch": "master"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 353575397,
|
||||||
|
"node_id": "MDEwOlJlcG9zaXRvcnkzNTM1NzUzOTc=",
|
||||||
|
"name": "proglog",
|
||||||
|
"full_name": "tyrelsouza/proglog",
|
||||||
|
"private": false,
|
||||||
|
"owner": {
|
||||||
|
"login": "tyrelsouza",
|
||||||
|
"id": 923113,
|
||||||
|
"node_id": "MDQ6VXNlcjkyMzExMw==",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/923113?v=4",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/tyrelsouza",
|
||||||
|
"html_url": "https://github.com/tyrelsouza",
|
||||||
|
"followers_url": "https://api.github.com/users/tyrelsouza/followers",
|
||||||
|
"following_url": "https://api.github.com/users/tyrelsouza/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/tyrelsouza/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/tyrelsouza/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/tyrelsouza/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/tyrelsouza/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/tyrelsouza/repos",
|
||||||
|
"events_url": "https://api.github.com/users/tyrelsouza/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/tyrelsouza/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"html_url": "https://github.com/tyrelsouza/proglog",
|
||||||
|
"description": "Following Distributed Services with Go book",
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/tyrelsouza/proglog",
|
||||||
|
"forks_url": "https://api.github.com/repos/tyrelsouza/proglog/forks",
|
||||||
|
"keys_url": "https://api.github.com/repos/tyrelsouza/proglog/keys{/key_id}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/tyrelsouza/proglog/collaborators{/collaborator}",
|
||||||
|
"teams_url": "https://api.github.com/repos/tyrelsouza/proglog/teams",
|
||||||
|
"hooks_url": "https://api.github.com/repos/tyrelsouza/proglog/hooks",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/tyrelsouza/proglog/issues/events{/number}",
|
||||||
|
"events_url": "https://api.github.com/repos/tyrelsouza/proglog/events",
|
||||||
|
"assignees_url": "https://api.github.com/repos/tyrelsouza/proglog/assignees{/user}",
|
||||||
|
"branches_url": "https://api.github.com/repos/tyrelsouza/proglog/branches{/branch}",
|
||||||
|
"tags_url": "https://api.github.com/repos/tyrelsouza/proglog/tags",
|
||||||
|
"blobs_url": "https://api.github.com/repos/tyrelsouza/proglog/git/blobs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/tyrelsouza/proglog/git/tags{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/tyrelsouza/proglog/git/refs{/sha}",
|
||||||
|
"trees_url": "https://api.github.com/repos/tyrelsouza/proglog/git/trees{/sha}",
|
||||||
|
"statuses_url": "https://api.github.com/repos/tyrelsouza/proglog/statuses/{sha}",
|
||||||
|
"languages_url": "https://api.github.com/repos/tyrelsouza/proglog/languages",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/tyrelsouza/proglog/stargazers",
|
||||||
|
"contributors_url": "https://api.github.com/repos/tyrelsouza/proglog/contributors",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/tyrelsouza/proglog/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/tyrelsouza/proglog/subscription",
|
||||||
|
"commits_url": "https://api.github.com/repos/tyrelsouza/proglog/commits{/sha}",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/tyrelsouza/proglog/git/commits{/sha}",
|
||||||
|
"comments_url": "https://api.github.com/repos/tyrelsouza/proglog/comments{/number}",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/tyrelsouza/proglog/issues/comments{/number}",
|
||||||
|
"contents_url": "https://api.github.com/repos/tyrelsouza/proglog/contents/{+path}",
|
||||||
|
"compare_url": "https://api.github.com/repos/tyrelsouza/proglog/compare/{base}...{head}",
|
||||||
|
"merges_url": "https://api.github.com/repos/tyrelsouza/proglog/merges",
|
||||||
|
"archive_url": "https://api.github.com/repos/tyrelsouza/proglog/{archive_format}{/ref}",
|
||||||
|
"downloads_url": "https://api.github.com/repos/tyrelsouza/proglog/downloads",
|
||||||
|
"issues_url": "https://api.github.com/repos/tyrelsouza/proglog/issues{/number}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/tyrelsouza/proglog/pulls{/number}",
|
||||||
|
"milestones_url": "https://api.github.com/repos/tyrelsouza/proglog/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/tyrelsouza/proglog/notifications{?since,all,participating}",
|
||||||
|
"labels_url": "https://api.github.com/repos/tyrelsouza/proglog/labels{/name}",
|
||||||
|
"releases_url": "https://api.github.com/repos/tyrelsouza/proglog/releases{/id}",
|
||||||
|
"deployments_url": "https://api.github.com/repos/tyrelsouza/proglog/deployments",
|
||||||
|
"created_at": "2021-04-01T04:42:22Z",
|
||||||
|
"updated_at": "2021-04-10T04:17:56Z",
|
||||||
|
"pushed_at": "2021-04-10T04:17:54Z",
|
||||||
|
"git_url": "git://github.com/tyrelsouza/proglog.git",
|
||||||
|
"ssh_url": "git@github.com:tyrelsouza/proglog.git",
|
||||||
|
"clone_url": "https://github.com/tyrelsouza/proglog.git",
|
||||||
|
"svn_url": "https://github.com/tyrelsouza/proglog",
|
||||||
|
"homepage": null,
|
||||||
|
"size": 8,
|
||||||
|
"stargazers_count": 0,
|
||||||
|
"watchers_count": 0,
|
||||||
|
"language": "Go",
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_downloads": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"forks_count": 0,
|
||||||
|
"mirror_url": null,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"open_issues_count": 0,
|
||||||
|
"license": null,
|
||||||
|
"allow_forking": true,
|
||||||
|
"is_template": false,
|
||||||
|
"topics": [],
|
||||||
|
"visibility": "public",
|
||||||
|
"forks": 0,
|
||||||
|
"open_issues": 0,
|
||||||
|
"watchers": 0,
|
||||||
|
"default_branch": "main"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 415131409,
|
||||||
|
"node_id": "R_kgDOGL5nEQ",
|
||||||
|
"name": "tyrel-intellij-demo",
|
||||||
|
"full_name": "tyrelsouza/tyrel-intellij-demo",
|
||||||
|
"private": false,
|
||||||
|
"owner": {
|
||||||
|
"login": "tyrelsouza",
|
||||||
|
"id": 923113,
|
||||||
|
"node_id": "MDQ6VXNlcjkyMzExMw==",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/923113?v=4",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/tyrelsouza",
|
||||||
|
"html_url": "https://github.com/tyrelsouza",
|
||||||
|
"followers_url": "https://api.github.com/users/tyrelsouza/followers",
|
||||||
|
"following_url": "https://api.github.com/users/tyrelsouza/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/tyrelsouza/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/tyrelsouza/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/tyrelsouza/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/tyrelsouza/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/tyrelsouza/repos",
|
||||||
|
"events_url": "https://api.github.com/users/tyrelsouza/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/tyrelsouza/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"html_url": "https://github.com/tyrelsouza/tyrel-intellij-demo",
|
||||||
|
"description": null,
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo",
|
||||||
|
"forks_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/forks",
|
||||||
|
"keys_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/keys{/key_id}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/collaborators{/collaborator}",
|
||||||
|
"teams_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/teams",
|
||||||
|
"hooks_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/hooks",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/issues/events{/number}",
|
||||||
|
"events_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/events",
|
||||||
|
"assignees_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/assignees{/user}",
|
||||||
|
"branches_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/branches{/branch}",
|
||||||
|
"tags_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/tags",
|
||||||
|
"blobs_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/git/blobs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/git/tags{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/git/refs{/sha}",
|
||||||
|
"trees_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/git/trees{/sha}",
|
||||||
|
"statuses_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/statuses/{sha}",
|
||||||
|
"languages_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/languages",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/stargazers",
|
||||||
|
"contributors_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/contributors",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/subscription",
|
||||||
|
"commits_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/commits{/sha}",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/git/commits{/sha}",
|
||||||
|
"comments_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/comments{/number}",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/issues/comments{/number}",
|
||||||
|
"contents_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/contents/{+path}",
|
||||||
|
"compare_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/compare/{base}...{head}",
|
||||||
|
"merges_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/merges",
|
||||||
|
"archive_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/{archive_format}{/ref}",
|
||||||
|
"downloads_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/downloads",
|
||||||
|
"issues_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/issues{/number}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/pulls{/number}",
|
||||||
|
"milestones_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/notifications{?since,all,participating}",
|
||||||
|
"labels_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/labels{/name}",
|
||||||
|
"releases_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/releases{/id}",
|
||||||
|
"deployments_url": "https://api.github.com/repos/tyrelsouza/tyrel-intellij-demo/deployments",
|
||||||
|
"created_at": "2021-10-08T21:28:08Z",
|
||||||
|
"updated_at": "2021-10-08T21:30:01Z",
|
||||||
|
"pushed_at": "2021-10-08T21:29:58Z",
|
||||||
|
"git_url": "git://github.com/tyrelsouza/tyrel-intellij-demo.git",
|
||||||
|
"ssh_url": "git@github.com:tyrelsouza/tyrel-intellij-demo.git",
|
||||||
|
"clone_url": "https://github.com/tyrelsouza/tyrel-intellij-demo.git",
|
||||||
|
"svn_url": "https://github.com/tyrelsouza/tyrel-intellij-demo",
|
||||||
|
"homepage": null,
|
||||||
|
"size": 104,
|
||||||
|
"stargazers_count": 0,
|
||||||
|
"watchers_count": 0,
|
||||||
|
"language": "Java",
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_downloads": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"forks_count": 0,
|
||||||
|
"mirror_url": null,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"open_issues_count": 0,
|
||||||
|
"license": null,
|
||||||
|
"allow_forking": true,
|
||||||
|
"is_template": false,
|
||||||
|
"topics": [],
|
||||||
|
"visibility": "public",
|
||||||
|
"forks": 0,
|
||||||
|
"open_issues": 0,
|
||||||
|
"watchers": 0,
|
||||||
|
"default_branch": "main"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 228900091,
|
||||||
|
"node_id": "MDEwOlJlcG9zaXRvcnkyMjg5MDAwOTE=",
|
||||||
|
"name": "work_sample",
|
||||||
|
"full_name": "tyrelsouza/work_sample",
|
||||||
|
"private": false,
|
||||||
|
"owner": {
|
||||||
|
"login": "tyrelsouza",
|
||||||
|
"id": 923113,
|
||||||
|
"node_id": "MDQ6VXNlcjkyMzExMw==",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/923113?v=4",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/tyrelsouza",
|
||||||
|
"html_url": "https://github.com/tyrelsouza",
|
||||||
|
"followers_url": "https://api.github.com/users/tyrelsouza/followers",
|
||||||
|
"following_url": "https://api.github.com/users/tyrelsouza/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/tyrelsouza/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/tyrelsouza/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/tyrelsouza/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/tyrelsouza/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/tyrelsouza/repos",
|
||||||
|
"events_url": "https://api.github.com/users/tyrelsouza/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/tyrelsouza/received_events",
|
||||||
|
"type": "User",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"html_url": "https://github.com/tyrelsouza/work_sample",
|
||||||
|
"description": "i need a public repo for work.",
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/tyrelsouza/work_sample",
|
||||||
|
"forks_url": "https://api.github.com/repos/tyrelsouza/work_sample/forks",
|
||||||
|
"keys_url": "https://api.github.com/repos/tyrelsouza/work_sample/keys{/key_id}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/tyrelsouza/work_sample/collaborators{/collaborator}",
|
||||||
|
"teams_url": "https://api.github.com/repos/tyrelsouza/work_sample/teams",
|
||||||
|
"hooks_url": "https://api.github.com/repos/tyrelsouza/work_sample/hooks",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/tyrelsouza/work_sample/issues/events{/number}",
|
||||||
|
"events_url": "https://api.github.com/repos/tyrelsouza/work_sample/events",
|
||||||
|
"assignees_url": "https://api.github.com/repos/tyrelsouza/work_sample/assignees{/user}",
|
||||||
|
"branches_url": "https://api.github.com/repos/tyrelsouza/work_sample/branches{/branch}",
|
||||||
|
"tags_url": "https://api.github.com/repos/tyrelsouza/work_sample/tags",
|
||||||
|
"blobs_url": "https://api.github.com/repos/tyrelsouza/work_sample/git/blobs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/tyrelsouza/work_sample/git/tags{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/tyrelsouza/work_sample/git/refs{/sha}",
|
||||||
|
"trees_url": "https://api.github.com/repos/tyrelsouza/work_sample/git/trees{/sha}",
|
||||||
|
"statuses_url": "https://api.github.com/repos/tyrelsouza/work_sample/statuses/{sha}",
|
||||||
|
"languages_url": "https://api.github.com/repos/tyrelsouza/work_sample/languages",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/tyrelsouza/work_sample/stargazers",
|
||||||
|
"contributors_url": "https://api.github.com/repos/tyrelsouza/work_sample/contributors",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/tyrelsouza/work_sample/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/tyrelsouza/work_sample/subscription",
|
||||||
|
"commits_url": "https://api.github.com/repos/tyrelsouza/work_sample/commits{/sha}",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/tyrelsouza/work_sample/git/commits{/sha}",
|
||||||
|
"comments_url": "https://api.github.com/repos/tyrelsouza/work_sample/comments{/number}",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/tyrelsouza/work_sample/issues/comments{/number}",
|
||||||
|
"contents_url": "https://api.github.com/repos/tyrelsouza/work_sample/contents/{+path}",
|
||||||
|
"compare_url": "https://api.github.com/repos/tyrelsouza/work_sample/compare/{base}...{head}",
|
||||||
|
"merges_url": "https://api.github.com/repos/tyrelsouza/work_sample/merges",
|
||||||
|
"archive_url": "https://api.github.com/repos/tyrelsouza/work_sample/{archive_format}{/ref}",
|
||||||
|
"downloads_url": "https://api.github.com/repos/tyrelsouza/work_sample/downloads",
|
||||||
|
"issues_url": "https://api.github.com/repos/tyrelsouza/work_sample/issues{/number}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/tyrelsouza/work_sample/pulls{/number}",
|
||||||
|
"milestones_url": "https://api.github.com/repos/tyrelsouza/work_sample/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/tyrelsouza/work_sample/notifications{?since,all,participating}",
|
||||||
|
"labels_url": "https://api.github.com/repos/tyrelsouza/work_sample/labels{/name}",
|
||||||
|
"releases_url": "https://api.github.com/repos/tyrelsouza/work_sample/releases{/id}",
|
||||||
|
"deployments_url": "https://api.github.com/repos/tyrelsouza/work_sample/deployments",
|
||||||
|
"created_at": "2019-12-18T18:36:33Z",
|
||||||
|
"updated_at": "2019-12-18T18:37:38Z",
|
||||||
|
"pushed_at": "2019-12-18T18:37:36Z",
|
||||||
|
"git_url": "git://github.com/tyrelsouza/work_sample.git",
|
||||||
|
"ssh_url": "git@github.com:tyrelsouza/work_sample.git",
|
||||||
|
"clone_url": "https://github.com/tyrelsouza/work_sample.git",
|
||||||
|
"svn_url": "https://github.com/tyrelsouza/work_sample",
|
||||||
|
"homepage": null,
|
||||||
|
"size": 3,
|
||||||
|
"stargazers_count": 0,
|
||||||
|
"watchers_count": 0,
|
||||||
|
"language": "Python",
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_downloads": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"forks_count": 0,
|
||||||
|
"mirror_url": null,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"open_issues_count": 1,
|
||||||
|
"license": {
|
||||||
|
"key": "mit",
|
||||||
|
"name": "MIT License",
|
||||||
|
"spdx_id": "MIT",
|
||||||
|
"url": "https://api.github.com/licenses/mit",
|
||||||
|
"node_id": "MDc6TGljZW5zZTEz"
|
||||||
|
},
|
||||||
|
"allow_forking": true,
|
||||||
|
"is_template": false,
|
||||||
|
"topics": [],
|
||||||
|
"visibility": "public",
|
||||||
|
"forks": 0,
|
||||||
|
"open_issues": 1,
|
||||||
|
"watchers": 0,
|
||||||
|
"default_branch": "master"
|
||||||
|
}
|
||||||
|
]
|
35
tests/fixtures/schema.json
vendored
Normal file
35
tests/fixtures/schema.json
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"current_user_url": "https://api.github.com/user",
|
||||||
|
"current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",
|
||||||
|
"authorizations_url": "https://api.github.com/authorizations",
|
||||||
|
"code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
|
||||||
|
"commit_search_url": "https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}",
|
||||||
|
"emails_url": "https://api.github.com/user/emails",
|
||||||
|
"emojis_url": "https://api.github.com/emojis",
|
||||||
|
"events_url": "https://api.github.com/events",
|
||||||
|
"feeds_url": "https://api.github.com/feeds",
|
||||||
|
"followers_url": "https://api.github.com/user/followers",
|
||||||
|
"following_url": "https://api.github.com/user/following{/target}",
|
||||||
|
"gists_url": "https://api.github.com/gists{/gist_id}",
|
||||||
|
"hub_url": "https://api.github.com/hub",
|
||||||
|
"issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
|
||||||
|
"issues_url": "https://api.github.com/issues",
|
||||||
|
"keys_url": "https://api.github.com/user/keys",
|
||||||
|
"label_search_url": "https://api.github.com/search/labels?q={query}&repository_id={repository_id}{&page,per_page}",
|
||||||
|
"notifications_url": "https://api.github.com/notifications",
|
||||||
|
"organization_url": "https://api.github.com/orgs/{org}",
|
||||||
|
"organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
|
||||||
|
"organization_teams_url": "https://api.github.com/orgs/{org}/teams",
|
||||||
|
"public_gists_url": "https://api.github.com/gists/public",
|
||||||
|
"rate_limit_url": "https://api.github.com/rate_limit",
|
||||||
|
"repository_url": "https://api.github.com/repos/{owner}/{repo}",
|
||||||
|
"repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
|
||||||
|
"current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",
|
||||||
|
"starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
|
||||||
|
"starred_gists_url": "https://api.github.com/gists/starred",
|
||||||
|
"topic_search_url": "https://api.github.com/search/topics?q={query}{&page,per_page}",
|
||||||
|
"user_url": "https://api.github.com/users/{user}",
|
||||||
|
"user_organizations_url": "https://api.github.com/user/orgs",
|
||||||
|
"user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
|
||||||
|
"user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user