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

Reply via email to