
Was seeing a lot of SyntaxWarnings when building as some regex strings were not raw strings and thus were showing invalid escape sequences due to (https://github.com/python/cpython/issues/98401). These are just warnings now on Python 3.12, but will become errors in the future. Fixing now to prevent builds breaking. It seems the files are mostly following this convention now, so this makes the non raw strings consistent. Change-Id: Ia8eacfd353c41a6c1d8e0482f3b7fbd4dc7a93e1 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5832811 Reviewed-by: Mihai Sardarescu <msarda@chromium.org> Commit-Queue: Andrew Grieve <agrieve@chromium.org> Reviewed-by: Andrew Grieve <agrieve@chromium.org> Cr-Commit-Position: refs/heads/main@{#1352933}
99 lines
2.9 KiB
Python
Executable File
99 lines
2.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright 2012 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""Python API for retrieving API keys.
|
|
|
|
Note that this does not have the exact same semantics as the C++ API
|
|
in google_api_keys.h, since it does not have access to gyp variables
|
|
or preprocessor defines.
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
|
|
# The token returned when an API key is unset.
|
|
DUMMY_TOKEN = 'dummytoken'
|
|
|
|
|
|
def _GetTokenFromOfficialFile(token_name):
|
|
"""Parses the token from the official file if it exists, else returns None."""
|
|
official_path = os.path.join(os.path.dirname(__file__),
|
|
'internal/google_chrome_api_keys.h')
|
|
if not os.path.isfile(official_path):
|
|
return None
|
|
|
|
line_regexp = r'^#define\s*%s\s*"([^"]+)"' % token_name
|
|
line_pattern = re.compile(line_regexp)
|
|
def ParseLine(current_line):
|
|
result = line_pattern.match(current_line)
|
|
if result:
|
|
return result.group(1)
|
|
else:
|
|
return None
|
|
|
|
with open(official_path) as f:
|
|
current_line = ''
|
|
for line in f:
|
|
if line.endswith('\\\n'):
|
|
current_line += line[:-2]
|
|
else:
|
|
# Last line in multi-line #define, or a line that is not a
|
|
# continuation line.
|
|
current_line += line
|
|
token = ParseLine(current_line)
|
|
if token:
|
|
if current_line.count('"') != 2:
|
|
raise Exception(
|
|
'Embedded quotes and multi-line strings are not supported.')
|
|
return token
|
|
current_line = ''
|
|
return None
|
|
|
|
|
|
def _GetToken(token_name):
|
|
"""Returns the API token with the given name, or DUMMY_TOKEN by default."""
|
|
if token_name in os.environ:
|
|
return os.environ[token_name]
|
|
token = _GetTokenFromOfficialFile(token_name)
|
|
if token:
|
|
return token
|
|
else:
|
|
return DUMMY_TOKEN
|
|
|
|
|
|
def GetAPIKey():
|
|
"""Returns the simple API key."""
|
|
return _GetToken('GOOGLE_API_KEY')
|
|
|
|
|
|
def GetAPIKeyAndroidNonStable():
|
|
"""Returns the API key for android non-stable channel."""
|
|
return _GetToken('GOOGLE_API_KEY_ANDROID_NON_STABLE')
|
|
|
|
|
|
def GetClientID(client_name):
|
|
"""Returns the OAuth 2.0 client ID for the client of the given name."""
|
|
return _GetToken('GOOGLE_CLIENT_ID_%s' % client_name)
|
|
|
|
|
|
def GetClientSecret(client_name):
|
|
"""Returns the OAuth 2.0 client secret for the client of the given name."""
|
|
return _GetToken('GOOGLE_CLIENT_SECRET_%s' % client_name)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print('GOOGLE_API_KEY=%s' % GetAPIKey())
|
|
print('GOOGLE_CLIENT_ID_MAIN=%s' % GetClientID('MAIN'))
|
|
print('GOOGLE_CLIENT_SECRET_MAIN=%s' % GetClientSecret('MAIN'))
|
|
print('GOOGLE_CLIENT_ID_REMOTING=%s' % GetClientID('REMOTING'))
|
|
print('GOOGLE_CLIENT_SECRET_REMOTING=%s' % GetClientSecret('REMOTING'))
|
|
print('GOOGLE_CLIENT_ID_REMOTING_HOST=%s' % GetClientID('REMOTING_HOST'))
|
|
print('GOOGLE_CLIENT_SECRET_REMOTING_HOST=%s' % GetClientSecret(
|
|
'REMOTING_HOST'))
|