2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """Python API for retrieving API keys.
8 Note that this does not have the exact same semantics as the C++ API
9 in google_api_keys.h, since it does not have access to gyp variables
10 or preprocessor defines.
18 # The token returned when an API key is unset.
19 DUMMY_TOKEN
= 'dummytoken'
22 def _GetTokenFromOfficialFile(token_name
):
23 """Parses the token from the official file if it exists, else returns None."""
24 official_path
= os
.path
.join(os
.path
.dirname(__file__
),
25 'internal/google_chrome_api_keys.h')
26 if not os
.path
.isfile(official_path
):
29 line_regexp
= '^#define\s*%s\s*"([^"]+)"' % token_name
30 line_pattern
= re
.compile(line_regexp
)
31 def ParseLine(current_line
):
32 result
= line_pattern
.match(current_line
)
34 return result
.group(1)
38 with
open(official_path
) as f
:
41 if line
.endswith('\\\n'):
42 current_line
+= line
[:-2]
44 # Last line in multi-line #define, or a line that is not a
47 token
= ParseLine(current_line
)
49 if current_line
.count('"') != 2:
51 'Embedded quotes and multi-line strings are not supported.')
57 def _GetToken(token_name
):
58 """Returns the API token with the given name, or DUMMY_TOKEN by default."""
59 if token_name
in os
.environ
:
60 return os
.environ
[token_name
]
61 token
= _GetTokenFromOfficialFile(token_name
)
69 """Returns the simple API key."""
70 return _GetToken('GOOGLE_API_KEY')
73 def GetAPIKeyRemoting():
74 """Returns the simple API key."""
75 return _GetToken('GOOGLE_API_KEY_REMOTING')
78 def GetClientID(client_name
):
79 """Returns the OAuth 2.0 client ID for the client of the given name."""
80 return _GetToken('GOOGLE_CLIENT_ID_%s' % client_name
)
83 def GetClientSecret(client_name
):
84 """Returns the OAuth 2.0 client secret for the client of the given name."""
85 return _GetToken('GOOGLE_CLIENT_SECRET_%s' % client_name
)
88 if __name__
== "__main__":
89 print 'GOOGLE_API_KEY=%s' % GetAPIKey()
90 print 'GOOGLE_API_KEY_REMOTING=%s' % GetAPIKeyRemoting()
91 print 'GOOGLE_CLIENT_ID_MAIN=%s' % GetClientID('MAIN')
92 print 'GOOGLE_CLIENT_SECRET_MAIN=%s' % GetClientSecret('MAIN')
93 print 'GOOGLE_CLIENT_ID_CLOUD_PRINT=%s' % GetClientID('CLOUD_PRINT')
94 print 'GOOGLE_CLIENT_SECRET_CLOUD_PRINT=%s' % GetClientSecret('CLOUD_PRINT')
95 print 'GOOGLE_CLIENT_ID_REMOTING=%s' % GetClientID('REMOTING')
96 print 'GOOGLE_CLIENT_SECRET_REMOTING=%s' % GetClientSecret('REMOTING')
97 print 'GOOGLE_CLIENT_ID_REMOTING_HOST=%s' % GetClientID('REMOTING_HOST')
98 print 'GOOGLE_CLIENT_SECRET_REMOTING_HOST=%s' % GetClientSecret(
100 print 'GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%s' %GetClientID
(
101 'REMOTING_IDENTITY_API')