Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Unified Diff: third_party/upload.py

Issue 1082033002: Use prefixed URLs path when calling internal Rietveld with OAuth2 auth. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: add-internal-rietveld Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/upload.py
diff --git a/third_party/upload.py b/third_party/upload.py
index 142789f8ec92f8b18c121451593a2d88593904f2..eac2a3d09928a16d0c740c5e6fd917094e054270 100755
--- a/third_party/upload.py
+++ b/third_party/upload.py
@@ -198,8 +198,8 @@ class AbstractRpcServer(object):
"""Provides a common interface for a simple RPC server."""
def __init__(self, host, auth_function, host_override=None,
- extra_headers=None, save_cookies=False,
- account_type=AUTH_ACCOUNT_TYPE):
+ request_path_prefix=None, extra_headers=None,
+ save_cookies=False, account_type=AUTH_ACCOUNT_TYPE):
"""Creates a new AbstractRpcServer.
Args:
@@ -208,6 +208,7 @@ class AbstractRpcServer(object):
(email, password) tuple when called. Will be called if authentication
is required.
host_override: The host header to send to the server (defaults to host).
+ request_path_prefix: A string to prefix all URL paths with (e.g. 'bots/').
extra_headers: A dict of extra headers to append to every request.
save_cookies: If True, save the authentication cookies to local disk.
If False, use an in-memory cookiejar instead. Subclasses must
@@ -220,6 +221,7 @@ class AbstractRpcServer(object):
not self.host.startswith("https://")):
self.host = "http://" + self.host
self.host_override = host_override
+ self.request_path_prefix = request_path_prefix or ''
self.auth_function = auth_function
self.authenticated = False
self.extra_headers = extra_headers or {}
@@ -432,7 +434,7 @@ class AbstractRpcServer(object):
while True:
tries += 1
args = dict(kwargs)
- url = "%s%s" % (self.host, request_path)
+ url = "%s%s%s" % (self.host, self.request_path_prefix, request_path)
if args:
url += "?" + urllib.urlencode(args)
req = self._CreateRequest(url=url, data=payload)
@@ -768,9 +770,23 @@ def GetRpcServer(server, auth_config=None, email=None):
else:
auth_func = KeyringCreds(server, host, email).GetUserCredentials
+ # HACK(crbug.com/476690): Internal Rietveld is configured to require cookie
+ # auth for all paths except /bots/* (requests to /bots/* are authenticated
+ # with OAuth). /bots/* paths expose exact same API as /* (at least enough of
+ # it for depot_tools to work). So when using OAuth with internal Rietveld,
+ # silently prefix all requests with '/bots'.
+ request_path_prefix = ''
+ if auth_config.use_oauth2:
+ if not host.startswith(('http://', 'https://')):
+ host = 'https://' + host
+ parsed = urlparse.urlparse(host)
+ if parsed.netloc.endswith('.googleplex.com'):
+ request_path_prefix = '/bots'
+
return HttpRpcServer(
server,
auth_func,
+ request_path_prefix=request_path_prefix,
save_cookies=auth_config.save_cookies,
account_type=AUTH_ACCOUNT_TYPE)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698