currentProjectId function
Implementation
Future<String> currentProjectId() async {
for (final envKey in gcpProjectIdEnvironmentVariables) {
final value = Platform.environment[envKey];
if (value != null) return value;
}
const host = 'http://metadata.google.internal/';
final url = Uri.parse('$host/computeMetadata/v1/project/project-id');
try {
final response = await http.get(
url,
headers: {'Metadata-Flavor': 'Google'},
);
if (response.statusCode != 200) {
throw HttpException(
'${response.body} (${response.statusCode})',
uri: url,
);
}
return response.body;
} on SocketException {
stderr.writeln(
'''
Could not connect to $host.
If not running on Google Cloud, one of these environment variables must be set
to the target Google Project ID:
${gcpProjectIdEnvironmentVariables.join('\n')}
''',
);
rethrow;
}
}