Index: third_party/oauth2client/devshell.py |
diff --git a/third_party/oauth2client/devshell.py b/third_party/oauth2client/devshell.py |
deleted file mode 100644 |
index 69d3808a3cba1b4e27fd09d14491e2cb6c50d5e8..0000000000000000000000000000000000000000 |
--- a/third_party/oauth2client/devshell.py |
+++ /dev/null |
@@ -1,135 +0,0 @@ |
-# Copyright 2015 Google Inc. All Rights Reserved. |
-# |
-# Licensed under the Apache License, Version 2.0 (the "License"); |
-# you may not use this file except in compliance with the License. |
-# You may obtain a copy of the License at |
-# |
-# http://www.apache.org/licenses/LICENSE-2.0 |
-# |
-# Unless required by applicable law or agreed to in writing, software |
-# distributed under the License is distributed on an "AS IS" BASIS, |
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-# See the License for the specific language governing permissions and |
-# limitations under the License. |
- |
-"""OAuth 2.0 utitilies for Google Developer Shell environment.""" |
- |
-import json |
-import os |
- |
-from . import client |
- |
- |
-DEVSHELL_ENV = 'DEVSHELL_CLIENT_PORT' |
- |
- |
-class Error(Exception): |
- """Errors for this module.""" |
- pass |
- |
- |
-class CommunicationError(Error): |
- """Errors for communication with the Developer Shell server.""" |
- |
- |
-class NoDevshellServer(Error): |
- """Error when no Developer Shell server can be contacted.""" |
- |
- |
-# The request for credential information to the Developer Shell client socket is |
-# always an empty PBLite-formatted JSON object, so just define it as a constant. |
-CREDENTIAL_INFO_REQUEST_JSON = '[]' |
- |
- |
-class CredentialInfoResponse(object): |
- """Credential information response from Developer Shell server. |
- |
- The credential information response from Developer Shell socket is a |
- PBLite-formatted JSON array with fields encoded by their index in the array: |
- * Index 0 - user email |
- * Index 1 - default project ID. None if the project context is not known. |
- * Index 2 - OAuth2 access token. None if there is no valid auth context. |
- """ |
- |
- def __init__(self, json_string): |
- """Initialize the response data from JSON PBLite array.""" |
- pbl = json.loads(json_string) |
- if not isinstance(pbl, list): |
- raise ValueError('Not a list: ' + str(pbl)) |
- pbl_len = len(pbl) |
- self.user_email = pbl[0] if pbl_len > 0 else None |
- self.project_id = pbl[1] if pbl_len > 1 else None |
- self.access_token = pbl[2] if pbl_len > 2 else None |
- |
- |
-def _SendRecv(): |
- """Communicate with the Developer Shell server socket.""" |
- |
- port = int(os.getenv(DEVSHELL_ENV, 0)) |
- if port == 0: |
- raise NoDevshellServer() |
- |
- import socket |
- |
- sock = socket.socket() |
- sock.connect(('localhost', port)) |
- |
- data = CREDENTIAL_INFO_REQUEST_JSON |
- msg = '%s\n%s' % (len(data), data) |
- sock.sendall(msg.encode()) |
- |
- header = sock.recv(6).decode() |
- if '\n' not in header: |
- raise CommunicationError('saw no newline in the first 6 bytes') |
- len_str, json_str = header.split('\n', 1) |
- to_read = int(len_str) - len(json_str) |
- if to_read > 0: |
- json_str += sock.recv(to_read, socket.MSG_WAITALL).decode() |
- |
- return CredentialInfoResponse(json_str) |
- |
- |
-class DevshellCredentials(client.GoogleCredentials): |
- """Credentials object for Google Developer Shell environment. |
- |
- This object will allow a Google Developer Shell session to identify its user |
- to Google and other OAuth 2.0 servers that can verify assertions. It can be |
- used for the purpose of accessing data stored under the user account. |
- |
- This credential does not require a flow to instantiate because it represents |
- a two legged flow, and therefore has all of the required information to |
- generate and refresh its own access tokens. |
- """ |
- |
- def __init__(self, user_agent=None): |
- super(DevshellCredentials, self).__init__( |
- None, # access_token, initialized below |
- None, # client_id |
- None, # client_secret |
- None, # refresh_token |
- None, # token_expiry |
- None, # token_uri |
- user_agent) |
- self._refresh(None) |
- |
- def _refresh(self, http_request): |
- self.devshell_response = _SendRecv() |
- self.access_token = self.devshell_response.access_token |
- |
- @property |
- def user_email(self): |
- return self.devshell_response.user_email |
- |
- @property |
- def project_id(self): |
- return self.devshell_response.project_id |
- |
- @classmethod |
- def from_json(cls, json_data): |
- raise NotImplementedError( |
- 'Cannot load Developer Shell credentials from JSON.') |
- |
- @property |
- def serialization_data(self): |
- raise NotImplementedError( |
- 'Cannot serialize Developer Shell credentials.') |