get<T> static method
Implementation
static Future<T> get<T>({
required String from,
bool returnRawResponse = false,
T Function(Map<String, dynamic>)? onSuccess,
}) async {
AILogger.log("starting request to $from");
final http.Response response = await http.get(
Uri.parse(from),
headers: AIConfigBuilder.instance.headers(),
);
if (returnRawResponse) {
return response.body as T;
}
AILogger.log(
"request to $from finished with status code ${response.statusCode}");
AILogger.log("starting decoding response body");
Utf8Decoder utf8decoder = const Utf8Decoder();
final Map<String, dynamic> decodedBody =
jsonDecode(utf8decoder.convert(response.bodyBytes))
as Map<String, dynamic>;
AILogger.log("response body decoded successfully");
if (decodedBody['error'] != null) {
AILogger.log("an error occurred, throwing exception");
final Map<String, dynamic> error = decodedBody['error'];
throw AIRequestException(
error["message"],
response.statusCode,
);
} else {
AILogger.log("request finished successfully");
return onSuccess!(decodedBody);
}
}