|
|
|
@ -161,6 +161,35 @@ class ApiClient {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<U> getJsonForObject<T, U>(FactoryConstructor<U> factoryConstructor, String url,
|
|
|
|
|
{String? token, Map<String, dynamic>? queryParameters, Map<String, String>? headers, int retryTimes = 0, bool isFormData = true}) async {
|
|
|
|
|
var defaultHeaders = {'Accept': 'application/json'};
|
|
|
|
|
if (headers != null && headers.isNotEmpty) {
|
|
|
|
|
defaultHeaders.addAll(headers);
|
|
|
|
|
}
|
|
|
|
|
if (!kReleaseMode) {
|
|
|
|
|
debugPrint("Url:$url");
|
|
|
|
|
}
|
|
|
|
|
var response = await getJsonForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes);
|
|
|
|
|
try {
|
|
|
|
|
var jsonData = jsonDecode(response.body.replaceAll(r"\'", "'"));
|
|
|
|
|
if (jsonData != null) {
|
|
|
|
|
debugPrint(jsonData.runtimeType.toString());
|
|
|
|
|
return factoryConstructor(jsonData);
|
|
|
|
|
} else {
|
|
|
|
|
APIError? apiError;
|
|
|
|
|
apiError = APIError(response.statusCode, jsonData[0]);
|
|
|
|
|
throw APIException(APIException.BAD_REQUEST, error: apiError);
|
|
|
|
|
}
|
|
|
|
|
} catch (ex) {
|
|
|
|
|
if (ex is APIException) {
|
|
|
|
|
rethrow;
|
|
|
|
|
} else {
|
|
|
|
|
throw APIException(APIException.BAD_RESPONSE_FORMAT, arguments: ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<Response> getJsonForResponse<T>(String url, {String? token, Map<String, dynamic>? queryParameters, Map<String, String>? headers, int retryTimes = 0}) async {
|
|
|
|
|
int currentRetryTime = retryTimes;
|
|
|
|
|
if (headers == null) {
|
|
|
|
@ -206,6 +235,12 @@ class ApiClient {
|
|
|
|
|
var queryString = Uri(queryParameters: queryParameters).query;
|
|
|
|
|
url = '$url?$queryString';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!kReleaseMode) {
|
|
|
|
|
debugPrint("Url:$url");
|
|
|
|
|
debugPrint("queryParameters:$queryParameters");
|
|
|
|
|
debugPrint("headers:$defaultHeaders");
|
|
|
|
|
}
|
|
|
|
|
var response = await _get(Uri.parse(url), headers: defaultHeaders).timeout(const Duration(seconds: 60));
|
|
|
|
|
|
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
|
|
|