~sourcemage/wand

3eff1b1fca81ee92bb37dc01edb9dcbdfb7b1ef9 — Vlad Glagolev 2 years ago 0291c89
Switch to GraphQL API on SourceHut
1 files changed, 16 insertions(+), 5 deletions(-)

M remirror/remirror
M remirror/remirror => remirror/remirror +16 -5
@@ 37,7 37,7 @@ except ImportError:
    HAS_REQUESTS = False


__version__ = "0.0.5"  # major.minor.revision
__version__ = "0.0.6"  # major.minor.revision


# ~/.sourcemage/mirror.yaml


@@ 334,22 334,33 @@ class ProviderBitbucket(Provider):


class ProviderSourceHut(Provider):
    api_url = "https://git.sr.ht/api/"
    api_url = "https://git.sr.ht/"
    git_host = "git@git.sr.ht"

    def __init__(self, conf, errcode):
        super(ProviderSourceHut, self).__init__(conf, errcode)

        self.auth = {'headers': {"Authorization": "token %s" % self.conf['token']}}
        self.auth = {'headers': {"Authorization": "Bearer %s" % self.conf['token']}}
        self.group = '~' + self.conf.get('organization')

    def sanity_check(self, repo):
        repo_ok = "/{0}/repos/{1}".format(self.group, repo.name)
        # GraphQL
        graphql = "/query"
        repo_ok = {'query': '{{ repositoryByOwner(owner: "{0}", repo: "{1}") {{ name }} }}'.format(self.group, repo.name)}

        req = self.http_call(repo_ok)
        req = self.http_call(graphql, repo_ok)

        req.raise_for_status()

        data = req.json()['data']

        # empty data equals server error
        if data is None:
            raise requests.HTTPError(500)

        if data.get('repositoryByOwner') is None:
            raise requests.HTTPError(404)


def mirror(conf):
    queue = Queue()