Changeset View
Changeset View
Standalone View
Standalone View
swh/lister/gitlab/lister.py
# Copyright (C) 2018-2019 the Software Heritage developers | # Copyright (C) 2018-2019 the Software Heritage developers | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import time | import time | ||||
from urllib3.util import parse_url | from urllib3.util import parse_url | ||||
from ..core.page_by_page_lister import PageByPageHttpLister | from ..core.page_by_page_lister import PageByPageHttpLister | ||||
from .models import GitLabModel | from .models import GitLabModel | ||||
class GitLabLister(PageByPageHttpLister): | class GitLabLister(PageByPageHttpLister): | ||||
# Template path expecting an integer that represents the page id | # Template path expecting an integer that represents the page id | ||||
PATH_TEMPLATE = '/projects?page=%d&order_by=id' | PATH_TEMPLATE = '/projects?page=%d&order_by=id' | ||||
DEFAULT_URL = 'https://gitlab.com/api/v4/' | |||||
MODEL = GitLabModel | MODEL = GitLabModel | ||||
LISTER_NAME = 'gitlab' | LISTER_NAME = 'gitlab' | ||||
def __init__(self, api_baseurl, instance=None, | def __init__(self, api_baseurl=None, instance=None, | ||||
override_config=None, sort='asc', per_page=20): | override_config=None, sort='asc', per_page=20): | ||||
super().__init__(api_baseurl=api_baseurl, | super().__init__(api_baseurl=api_baseurl, | ||||
override_config=override_config) | override_config=override_config) | ||||
if instance is None: | if instance is None: | ||||
instance = parse_url(api_baseurl).host | instance = parse_url(self.api_baseurl).host | ||||
self.instance = instance | self.instance = instance | ||||
self.PATH_TEMPLATE = '%s&sort=%s' % (self.PATH_TEMPLATE, sort) | self.PATH_TEMPLATE = '%s&sort=%s&per_page=%s' % ( | ||||
if per_page != 20: | self.PATH_TEMPLATE, sort, per_page) | ||||
self.PATH_TEMPLATE = '%s&per_page=%s' % ( | |||||
self.PATH_TEMPLATE, per_page) | |||||
def uid(self, repo): | def uid(self, repo): | ||||
return '%s/%s' % (self.instance, repo['path_with_namespace']) | return '%s/%s' % (self.instance, repo['path_with_namespace']) | ||||
def get_model_from_repo(self, repo): | def get_model_from_repo(self, repo): | ||||
return { | return { | ||||
'instance': self.instance, | 'instance': self.instance, | ||||
'uid': self.uid(repo), | 'uid': self.uid(repo), | ||||
▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines |