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

Unified Diff: rietveld.py

Issue 236093002: Added POST capability to oauth Rietveld (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Style fixes Created 6 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 | « presubmit_support.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: rietveld.py
diff --git a/rietveld.py b/rietveld.py
index ba2a27d874b8c562f6327904bd9d3529e206f3a2..e296181ade2130e366cd904bf1a35ba483fe9b06 100644
--- a/rietveld.py
+++ b/rietveld.py
@@ -444,7 +444,7 @@ class Rietveld(object):
class OAuthRpcServer(object):
def __init__(self,
host,
- client_id,
+ client_email,
client_private_key,
private_key_password='notasecret',
user_agent=None,
@@ -452,7 +452,7 @@ class OAuthRpcServer(object):
extra_headers=None):
"""Wrapper around httplib2.Http() that handles authentication.
- client_id: client id for service account
+ client_email: email associated with the service account
client_private_key: encrypted private key, as a string
private_key_password: password used to decrypt the private key
"""
@@ -475,12 +475,12 @@ class OAuthRpcServer(object):
self.extra_headers = extra_headers or {}
if not oa2client.HAS_OPENSSL:
- logging.error("Support for OpenSSL hasn't been found, "
+ logging.error("No support for OpenSSL has been found, "
"OAuth2 support requires it.")
logging.error("Installing pyopenssl will probably solve this issue.")
raise RuntimeError('No OpenSSL support')
creds = oa2client.SignedJwtAssertionCredentials(
- client_id,
+ client_email,
client_private_key,
'https://www.googleapis.com/auth/userinfo.email',
private_key_password=private_key_password,
@@ -513,7 +513,6 @@ class OAuthRpcServer(object):
if payload is not None:
method = 'POST'
headers['Content-Type'] = content_type
- raise NotImplementedError('POST requests are not yet supported.')
prev_timeout = self._http.timeout
try:
@@ -528,7 +527,9 @@ class OAuthRpcServer(object):
method=method,
body=payload,
headers=headers)
- if not ret[0]['content-location'].startswith(self.host):
+
+ if (method == 'GET'
+ and not ret[0]['content-location'].startswith(self.host)):
upload.logging.warning('Redirection to host %s detected: '
'login may have failed/expired.'
% urlparse.urlparse(
@@ -549,18 +550,26 @@ class JwtOAuth2Rietveld(Rietveld):
# pylint: disable=W0231
def __init__(self,
url,
- client_id,
+ client_email,
client_private_key_file,
private_key_password=None,
extra_headers=None):
+
+ # These attributes are accessed by commit queue. Keep them.
+ self.email = client_email
+ self.private_key_file = client_private_key_file
+
if private_key_password is None: # '' means 'empty password'
private_key_password = 'notasecret'
self.url = url.rstrip('/')
+ bot_url = self.url + '/bots'
+
with open(client_private_key_file, 'rb') as f:
client_private_key = f.read()
- self.rpc_server = OAuthRpcServer(url,
- client_id,
+ logging.info('Using OAuth login: %s' % client_email)
+ self.rpc_server = OAuthRpcServer(bot_url,
+ client_email,
client_private_key,
private_key_password=private_key_password,
extra_headers=extra_headers or {})
« no previous file with comments | « presubmit_support.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698