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

Side by Side Diff: third_party/upload.py

Issue 5342001: Propagate host to _GetAuthToken() to fix the account type check. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 10 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2007 Google Inc. 3 # Copyright 2007 Google Inc.
4 # 4 #
5 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License. 6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at 7 # You may obtain a copy of the License at
8 # 8 #
9 # http://www.apache.org/licenses/LICENSE-2.0 9 # http://www.apache.org/licenses/LICENSE-2.0
10 # 10 #
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 def _CreateRequest(self, url, data=None): 211 def _CreateRequest(self, url, data=None):
212 """Creates a new urllib request.""" 212 """Creates a new urllib request."""
213 logging.debug("Creating request for: '%s' with payload:\n%s", url, data) 213 logging.debug("Creating request for: '%s' with payload:\n%s", url, data)
214 req = urllib2.Request(url, data=data) 214 req = urllib2.Request(url, data=data)
215 if self.host_override: 215 if self.host_override:
216 req.add_header("Host", self.host_override) 216 req.add_header("Host", self.host_override)
217 for key, value in self.extra_headers.iteritems(): 217 for key, value in self.extra_headers.iteritems():
218 req.add_header(key, value) 218 req.add_header(key, value)
219 return req 219 return req
220 220
221 def _GetAuthToken(self, email, password): 221 def _GetAuthToken(self, host, email, password):
222 """Uses ClientLogin to authenticate the user, returning an auth token. 222 """Uses ClientLogin to authenticate the user, returning an auth token.
223 223
224 Args: 224 Args:
225 host: Host to get a token against.
225 email: The user's email address 226 email: The user's email address
226 password: The user's password 227 password: The user's password
227 228
228 Raises: 229 Raises:
229 ClientLoginError: If there was an error authenticating with ClientLogin. 230 ClientLoginError: If there was an error authenticating with ClientLogin.
230 HTTPError: If there was some other form of HTTP error. 231 HTTPError: If there was some other form of HTTP error.
231 232
232 Returns: 233 Returns:
233 The authentication token returned by ClientLogin. 234 The authentication token returned by ClientLogin.
234 """ 235 """
235 account_type = self.account_type 236 account_type = self.account_type
236 if self.host.endswith(".google.com"): 237 if host.endswith(".google.com"):
237 # Needed for use inside Google. 238 # Needed for use inside Google.
238 account_type = "HOSTED" 239 account_type = "HOSTED"
239 req = self._CreateRequest( 240 req = self._CreateRequest(
240 url="https://www.google.com/accounts/ClientLogin", 241 url="https://www.google.com/accounts/ClientLogin",
241 data=urllib.urlencode({ 242 data=urllib.urlencode({
242 "Email": email, 243 "Email": email,
243 "Passwd": password, 244 "Passwd": password,
244 "service": "ah", 245 "service": "ah",
245 "source": "rietveld-codereview-upload", 246 "source": "rietveld-codereview-upload",
246 "accountType": account_type, 247 "accountType": account_type,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 authentication cookie. If login was successful, it tries to redirect 310 authentication cookie. If login was successful, it tries to redirect
310 us to the URL we provided. 311 us to the URL we provided.
311 312
312 If we attempt to access the upload API without first obtaining an 313 If we attempt to access the upload API without first obtaining an
313 authentication cookie, it returns a 401 response (or a 302) and 314 authentication cookie, it returns a 401 response (or a 302) and
314 directs us to authenticate ourselves with ClientLogin. 315 directs us to authenticate ourselves with ClientLogin.
315 """ 316 """
316 for i in range(3): 317 for i in range(3):
317 credentials = self.auth_function() 318 credentials = self.auth_function()
318 try: 319 try:
319 auth_token = self._GetAuthToken(credentials[0], credentials[1]) 320 auth_token = self._GetAuthToken(host, credentials[0], credentials[1])
320 except ClientLoginError, e: 321 except ClientLoginError, e:
321 if e.reason == "BadAuthentication": 322 if e.reason == "BadAuthentication":
322 print >>sys.stderr, "Invalid username or password." 323 print >>sys.stderr, "Invalid username or password."
323 continue 324 continue
324 if e.reason == "CaptchaRequired": 325 if e.reason == "CaptchaRequired":
325 print >>sys.stderr, ( 326 print >>sys.stderr, (
326 "Please go to\n" 327 "Please go to\n"
327 "https://www.google.com/accounts/DisplayUnlockCaptcha\n" 328 "https://www.google.com/accounts/DisplayUnlockCaptcha\n"
328 "and verify you are a human. Then try again.\n" 329 "and verify you are a human. Then try again.\n"
329 "If you are using a Google Apps account the URL is:\n" 330 "If you are using a Google Apps account the URL is:\n"
(...skipping 1443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 try: 1774 try:
1774 RealMain(sys.argv) 1775 RealMain(sys.argv)
1775 except KeyboardInterrupt: 1776 except KeyboardInterrupt:
1776 print 1777 print
1777 StatusUpdate("Interrupted.") 1778 StatusUpdate("Interrupted.")
1778 sys.exit(1) 1779 sys.exit(1)
1779 1780
1780 1781
1781 if __name__ == "__main__": 1782 if __name__ == "__main__":
1782 main() 1783 main()
OLDNEW
« 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