| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 # Copyright 2014 The Chromium Authors. All rights reserved. | 3 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 '''A set of utilities to interface with the Chrome Webstore API.''' | 7 '''A set of utilities to interface with the Chrome Webstore API.''' |
| 8 | 8 |
| 9 import SimpleHTTPServer | 9 import SimpleHTTPServer |
| 10 import SocketServer | 10 import SocketServer |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 Handler = CodeRequestHandler | 48 Handler = CodeRequestHandler |
| 49 httpd = SocketServer.TCPServer(("", PORT), Handler) | 49 httpd = SocketServer.TCPServer(("", PORT), Handler) |
| 50 query = '&'.join(['response_type=code', | 50 query = '&'.join(['response_type=code', |
| 51 'scope=%s' % WEBSTORE_API_SCOPE, | 51 'scope=%s' % WEBSTORE_API_SCOPE, |
| 52 'client_id=%(client_id)s' % PROJECT_ARGS, | 52 'client_id=%(client_id)s' % PROJECT_ARGS, |
| 53 'redirect_uri=%(redirect_uri)s' % PROJECT_ARGS]) | 53 'redirect_uri=%(redirect_uri)s' % PROJECT_ARGS]) |
| 54 auth_url = ' https://%s%s?%s' % (OAUTH_DOMAIN, OAUTH_AUTH_COMMAND, query) | 54 auth_url = ' https://%s%s?%s' % (OAUTH_DOMAIN, OAUTH_AUTH_COMMAND, query) |
| 55 print 'Navigating to %s' % auth_url | 55 print 'Navigating to %s' % auth_url |
| 56 webbrowser.open(auth_url) | 56 webbrowser.open(auth_url) |
| 57 httpd.handle_request() | 57 httpd.handle_request() |
| 58 httpd.server_close() |
| 58 return httpd.code | 59 return httpd.code |
| 59 | 60 |
| 60 def GetOauthToken(code, client_secret): | 61 def GetOauthToken(code, client_secret): |
| 61 PROJECT_ARGS['code'] = code | 62 PROJECT_ARGS['code'] = code |
| 62 PROJECT_ARGS['client_secret'] = client_secret | 63 PROJECT_ARGS['client_secret'] = client_secret |
| 63 body = urllib.urlencode(PROJECT_ARGS) | 64 body = urllib.urlencode(PROJECT_ARGS) |
| 64 conn = httplib.HTTPSConnection(OAUTH_DOMAIN) | 65 conn = httplib.HTTPSConnection(OAUTH_DOMAIN) |
| 65 conn.putrequest('POST', OAUTH_TOKEN_COMMAND) | 66 conn.putrequest('POST', OAUTH_TOKEN_COMMAND) |
| 66 conn.putheader('content-type', 'application/x-www-form-urlencoded') | 67 conn.putheader('content-type', 'application/x-www-form-urlencoded') |
| 67 conn.putheader('content-length', len(body)) | 68 conn.putheader('content-length', len(body)) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 83 def SendGetCommand(command, client_secret): | 84 def SendGetCommand(command, client_secret): |
| 84 headers = GetPopulatedHeader(client_secret) | 85 headers = GetPopulatedHeader(client_secret) |
| 85 conn = httplib.HTTPSConnection(API_ENDPOINT_DOMAIN) | 86 conn = httplib.HTTPSConnection(API_ENDPOINT_DOMAIN) |
| 86 conn.request('GET', command, '', headers) | 87 conn.request('GET', command, '', headers) |
| 87 return conn.getresponse() | 88 return conn.getresponse() |
| 88 | 89 |
| 89 def SendPostCommand(command, client_secret, header_additions = {}, body=None): | 90 def SendPostCommand(command, client_secret, header_additions = {}, body=None): |
| 90 headers = GetPopulatedHeader(client_secret) | 91 headers = GetPopulatedHeader(client_secret) |
| 91 headers = dict(headers.items() + header_additions.items()) | 92 headers = dict(headers.items() + header_additions.items()) |
| 92 conn = httplib.HTTPSConnection(API_ENDPOINT_DOMAIN) | 93 conn = httplib.HTTPSConnection(API_ENDPOINT_DOMAIN) |
| 93 conn.request('PUT', command, body, headers) | 94 conn.request('POST', command, body, headers) |
| 94 return conn.getresponse() | 95 return conn.getresponse() |
| 95 | 96 |
| 96 def GetUploadStatus(client_secret): | 97 def GetUploadStatus(client_secret): |
| 97 '''Gets the status of a previous upload. | 98 '''Gets the status of a previous upload. |
| 98 Args: | 99 Args: |
| 99 client_secret ChromeVox's client secret creds. | 100 client_secret ChromeVox's client secret creds. |
| 100 ''' | 101 ''' |
| 101 return SendGetCommand(COMMAND_GET_UPLOAD_STATUS, client_secret) | 102 return SendGetCommand(COMMAND_GET_UPLOAD_STATUS, client_secret) |
| 102 | 103 |
| 103 # httplib fails to persist the connection during upload; use curl instead. | 104 # httplib fails to persist the connection during upload; use curl instead. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 129 return SendPostCommand(COMMAND_POST_PUBLISH, | 130 return SendPostCommand(COMMAND_POST_PUBLISH, |
| 130 client_secret, | 131 client_secret, |
| 131 { 'publishTarget': 'trustedTesters'}) | 132 { 'publishTarget': 'trustedTesters'}) |
| 132 | 133 |
| 133 def PostPublish(client_secret): | 134 def PostPublish(client_secret): |
| 134 '''Publishes a previously uploaded ChromeVox extension publically. | 135 '''Publishes a previously uploaded ChromeVox extension publically. |
| 135 Args: | 136 Args: |
| 136 client_secret ChromeVox's client secret creds. | 137 client_secret ChromeVox's client secret creds. |
| 137 ''' | 138 ''' |
| 138 return SendPostCommand(COMMAND_POST_PUBLISH, client_secret) | 139 return SendPostCommand(COMMAND_POST_PUBLISH, client_secret) |
| OLD | NEW |