get method
Get function invoked on HTTP requests
Implementation
Future<void> get(QueryParameters queryParameters, [Duration? timeout]) async {
final uri = Uri.https(_baseUri, '/v1/vardata', queryParameters.toJson());
final request = httpClient.get(uri, headers: {'Authorization': 'Api-Key $_apiKey'});
if (timeout != null) {
request.timeout(timeout, onTimeout: () => throw TimeoutException('Request timed out!'));
}
final response = await request;
if (response.statusCode != 200) {
String data = response.body;
if (!_isRetry && _shouldRetry) {
// If the server did not return a 200 OK response,
// then throw an exception.
throw Exception({'message': 'Failed to fetch through SDK!', 'status': response.statusCode, 'trace': data});
}
_isRetry = true;
get(queryParameters, timeout);
}
Map<String, dynamic> data = jsonDecode(const Utf8Decoder().convert(response.bodyBytes));
if (data.isEmpty) {
fetchResult = {};
} else {
data.forEach((key, value) {
fetchResult[key] = ExperimentFetchItem.fromMap(value);
});
}
_isRetry = false;
}