From a77998c0126b525f50eccd9e98c0dc81a0ae9c51 Mon Sep 17 00:00:00 2001 From: Adnan Maolood Date: Fri, 4 Feb 2022 09:41:36 -0500 Subject: [PATCH] hubsrht: Remove usage of repository(id) GraphQL query The repository(id) query will be removed from git.sr.ht, so use the User.repository(name) query instead. --- hubsrht/blueprints/projects.py | 2 +- hubsrht/builds.py | 2 +- hubsrht/services.py | 72 ++++++++++++++++++---------------- 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/hubsrht/blueprints/projects.py b/hubsrht/blueprints/projects.py index e028558..1090eb3 100644 --- a/hubsrht/blueprints/projects.py +++ b/hubsrht/blueprints/projects.py @@ -63,7 +63,7 @@ def summary_GET(owner, project_name): repo = project.summary_repo try: if repo.repo_type == RepoType.git: - summary = git.get_readme(owner, repo.remote_id, repo.url()) + summary = git.get_readme(owner, repo.name, repo.url()) elif repo.repo_type == RepoType.hg: summary = hg.get_readme(owner, repo.name, repo.url()) else: diff --git a/hubsrht/builds.py b/hubsrht/builds.py index 8a79160..d531e10 100644 --- a/hubsrht/builds.py +++ b/hubsrht/builds.py @@ -35,7 +35,7 @@ def submit_patchset(ml, payload): if repo.repo_type != RepoType.git: # TODO: support for hg.sr.ht return None - manifests = git.get_manifests(repo.owner, repo.remote_id) + manifests = git.get_manifests(repo.owner, repo.name) if not manifests: return None if len(manifests) > 4: diff --git a/hubsrht/services.py b/hubsrht/services.py index 19178db..31cc1e4 100644 --- a/hubsrht/services.py +++ b/hubsrht/services.py @@ -84,14 +84,16 @@ class GitService(SrhtService): raise Exception(r.text) return r.json() - def get_readme(self, user, repo_id, repo_url): + def get_readme(self, user, repo_name, repo_url): readme_query = """ - query Readme($repoId: Int!) { - repository(id: $repoId) { - html: readme - md: path(path: "README.md") { ...textData } - markdown: path(path: "README.markdown") { ...textData } - plaintext: path(path: "README") { ...textData } + query Readme($username: String!, $repoName: String!) { + user(username: $username) { + repository(name: $repoName) { + html: readme + md: path(path: "README.md") { ...textData } + markdown: path(path: "README.markdown") { ...textData } + plaintext: path(path: "README") { ...textData } + } } } @@ -106,13 +108,14 @@ class GitService(SrhtService): r = self.post(user, None, f"{_gitsrht}/query", { "query": readme_query, "variables": { - "repoId": repo_id, + "username": user.username, + "repoName": repo_name, }, }) - if not r["data"]["repository"]: - raise Exception(f"git.sr.ht returned no repository for ID {repo_id}: " + + if not r["data"]["user"]["repository"]: + raise Exception("git.sr.ht returned no repository: " + json.dumps(r, indent=1)) - repo = r["data"]["repository"] + repo = r["data"]["user"]["repository"] content = repo["html"] if content: @@ -132,25 +135,27 @@ class GitService(SrhtService): return None - def get_manifests(self, user, repo_id): + def get_manifests(self, user, repo_name): manifests_query = """ - query Manifests($repoId: Int!) { - repository(id: $repoId) { - multiple: path(path:".builds") { - object { - ... on Tree { - entries { - results { - name - object { ... on TextBlob { text } } + query Manifests($username: String!, $repoName: String!) { + user(username: $username) { + repository(name: $repoName) { + multiple: path(path:".builds") { + object { + ... on Tree { + entries { + results { + name + object { ... on TextBlob { text } } + } } } } - } - }, - single: path(path:".build.yml") { - object { - ... on TextBlob { text } + }, + single: path(path:".build.yml") { + object { + ... on TextBlob { text } + } } } } @@ -159,21 +164,22 @@ class GitService(SrhtService): r = self.post(user, None, f"{_gitsrht}/query", { "query": manifests_query, "variables": { - "repoId": repo_id, + "username": user.username, + "repoName": repo_name, }, }) - if not r["data"]["repository"]: - raise Exception(f"git.sr.ht did not find repo ID {repo_id} (requesting on behalf of {user.username})\n" + + if not r["data"]["user"]["repository"]: + raise Exception(f"git.sr.ht did not find repo {repo_name} (requesting on behalf of {user.username})\n" + json.dumps(r, indent=1)) manifests = dict() - if r["data"]["repository"]["multiple"]: - for ent in r["data"]["repository"]["multiple"]["object"]\ + if r["data"]["user"]["repository"]["multiple"]: + for ent in r["data"]["user"]["repository"]["multiple"]["object"]\ ["entries"]["results"]: if not ent["object"]: continue manifests[ent["name"]] = ent["object"]["text"] - elif r["data"]["repository"]["single"]: - manifests[".build.yml"] = r["data"]["repository"]["single"]\ + elif r["data"]["user"]["repository"]["single"]: + manifests[".build.yml"] = r["data"]["user"]["repository"]["single"]\ ["object"]["text"] else: return None