Merge lp:~jelmer/brz/hoster-supported-but into lp:brz/3.1

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/hoster-supported-but
Merge into: lp:brz/3.1
Diff against target: 56 lines (+20/-4)
1 file modified
breezy/plugins/gitlab/hoster.py (+20/-4)
To merge this branch: bzr merge lp:~jelmer/brz/hoster-supported-but
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+400299@code.launchpad.net

Commit message

Support probing for GitLab URLs.

Description of the change

Support probing for GitLab URLs.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'breezy/plugins/gitlab/hoster.py'
--- breezy/plugins/gitlab/hoster.py 2021-03-27 16:32:17 +0000
+++ breezy/plugins/gitlab/hoster.py 2021-03-28 18:36:21 +0000
@@ -45,6 +45,7 @@
45 PrerequisiteBranchUnsupported,45 PrerequisiteBranchUnsupported,
46 SourceNotDerivedFromTarget,46 SourceNotDerivedFromTarget,
47 UnsupportedHoster,47 UnsupportedHoster,
48 HosterLoginRequired,
48 )49 )
4950
5051
@@ -109,9 +110,9 @@
109 self.target_host = target_host110 self.target_host = target_host
110111
111112
112class GitLabLoginMissing(errors.BzrError):113class GitLabLoginMissing(HosterLoginRequired):
113114
114 _fmt = ("Please log into GitLab")115 _fmt = ("Please log into GitLab instance at %(hoster)s")
115116
116117
117class GitlabLoginError(errors.BzrError):118class GitlabLoginError(errors.BzrError):
@@ -693,7 +694,12 @@
693 return self.base_hostname == host694 return self.base_hostname == host
694695
695 def check(self):696 def check(self):
696 response = self._api_request('GET', 'user')697 try:
698 response = self._api_request('GET', 'user')
699 except errors.UnexpectedHttpStatus as e:
700 if e.code == 401:
701 raise GitLabLoginMissing()
702 raise
697 if response.status == 200:703 if response.status == 200:
698 self._current_user = json.loads(response.data)704 self._current_user = json.loads(response.data)
699 return705 return
@@ -715,7 +721,17 @@
715 credentials = get_credentials_by_url(transport.base)721 credentials = get_credentials_by_url(transport.base)
716 if credentials is not None:722 if credentials is not None:
717 return cls(transport, credentials.get('private_token'))723 return cls(transport, credentials.get('private_token'))
718 raise UnsupportedHoster(url)724 try:
725 resp = transport.request(
726 'GET', 'https://%s/api/v4/projects/%s' % (host, urlutils.quote(str(project), '')))
727 except errors.UnexpectedHttpStatus as e:
728 raise UnsupportedHoster(url)
729 else:
730 if not resp.getheader('X-Gitlab-Feature-Category'):
731 raise UnsupportedHoster(url)
732 if resp.status in (200, 401):
733 raise GitLabLoginMissing()
734 raise UnsupportedHoster(url)
719735
720 @classmethod736 @classmethod
721 def iter_instances(cls):737 def iter_instances(cls):

Subscribers

People subscribed via source and target branches