request<T, R> method

  1. @override
Future<R> request<T, R>({
  1. required Uri path,
  2. Map<String, dynamic>? body,
  3. HttpMethod method = HttpMethod.get,
})
override

Implementation

@override
Future<R> request<T, R>({
  required Uri path,
  Map<String, dynamic>? body,
  HttpMethod method = HttpMethod.get,
}) async {
  late Response response;
  try {
    response = await dio.request(
      path.toString(),
      data: body,
      options: Options(method: method.name),
    );
  } on DioError catch (e) {
    throw e.error;
  }

  final parsercontainsKey = jsonParserMap.containsKey(T);
  if (!parsercontainsKey) {
    return response.data;
  }

  final parser = (jsonParserMap[T] as JsonParser<T>);

  try {
    if (response.data is List<dynamic> ||
        response.data is Map<String, dynamic>) {
      final jsonParserIsolate = JsonPareserIsolate<T, R>(
        data: response.data,
        parser: parser,
      );
      final parsed = await jsonParserIsolate.parse();
      return parsed;
    }
    return response.data;
  } catch (e) {
    throw DroneException.jsonDeserializationException(message: '$e');
  }
}