Dachary has uploaded a new change for review. https://gerrit.wikimedia.org/r/309729
Change subject: repository: support svn credentials ...................................................................... repository: support svn credentials Change-Id: I05132f660c851a3e3e8b734369cc19ba7eda16ff Signed-off-by: Loic Dachary <l...@dachary.org> --- M FLOSSbot/repository.py 1 file changed, 22 insertions(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/pywikibot/bots/FLOSSbot refs/changes/29/309729/1 diff --git a/FLOSSbot/repository.py b/FLOSSbot/repository.py index d9df9a4..ea72c10 100644 --- a/FLOSSbot/repository.py +++ b/FLOSSbot/repository.py @@ -28,6 +28,7 @@ log = logging.getLogger(__name__) +P_username = "P554" P_protocol = "P2700" P_source_code_repository = "P1324" @@ -172,11 +173,19 @@ """.format(url=url)) @staticmethod - def verify_svn(url): + def verify_svn(url, credentials): + if credentials: + user = '--username=' + credentials[0] + else: + user = '' + if credentials and len(credentials) > 1: + password = '--password=' + credentials[1] + else: + password = '' return util.sh_bool(""" set -e - timeout 30 svn info {url} - """.format(url=url)) + timeout 30 svn info {url} {user} {password} + """.format(url=url, user=user, password=password)) @staticmethod def verify_fossil(url): @@ -209,7 +218,7 @@ return r.status_code == requests.codes.ok @staticmethod - def verify_protocol(url, protocol): + def verify_protocol(url, protocol, credentials): if protocol == Repository.Q_git: return Repository.verify_git(url) elif protocol == Repository.Q_hg: @@ -219,7 +228,7 @@ elif protocol == Repository.Q_bzr: return Repository.verify_bzr(url) elif protocol == Repository.Q_svn: - return Repository.verify_svn(url) + return Repository.verify_svn(url, credentials) elif protocol == Repository.Q_http: return Repository.verify_http(url) elif protocol == Repository.Q_ftp: @@ -227,13 +236,13 @@ return None @staticmethod - def try_protocol(url): + def try_protocol(url, credentials): log.debug("trying all known protocols on " + url) if Repository.verify_git(url): return Repository.Q_git elif Repository.verify_hg(url): return Repository.Q_hg - elif Repository.verify_svn(url): + elif Repository.verify_svn(url, credentials): return Repository.Q_svn elif Repository.verify_bzr(url): return Repository.Q_bzr @@ -244,16 +253,20 @@ @staticmethod def guess_protocol(repository): url = repository.getTarget() + if P_username in repository.qualifiers: + credentials = repository.qualifiers[P_username][0].getTarget().split(':') + else: + credentials = None protocol = Repository.guess_protocol_from_url(url) if protocol: - if not Repository.verify_protocol(url, protocol): + if not Repository.verify_protocol(url, protocol, credentials): log.error("ERROR " + url + " does not obey the expected protocol " + str(protocol)) return None else: return protocol - return Repository.try_protocol(url) + return Repository.try_protocol(url, credentials) @staticmethod def fixup_url(repository): -- To view, visit https://gerrit.wikimedia.org/r/309729 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I05132f660c851a3e3e8b734369cc19ba7eda16ff Gerrit-PatchSet: 1 Gerrit-Project: pywikibot/bots/FLOSSbot Gerrit-Branch: master Gerrit-Owner: Dachary <l...@dachary.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits