| 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 {})
|
|
|