call method

Future call({
  1. String? path,
  2. required Method method,
  3. Map<String, dynamic>? params,
  4. Map<String, dynamic>? body,
  5. Map<String, dynamic>? headers,
  6. Map<int, Function> statusCodeHandlers = const {},
})

Implementation

Future<dynamic> call({
  String? path,
  required Method method,
  Map<String, dynamic>? params,
  Map<String, dynamic>? body,
  Map<String, dynamic>? headers,
  Map<int, Function> statusCodeHandlers = const {},
}) async {
  try {
    final Response<dynamic> response = await dio.request(
      path ?? '',
      queryParameters: params,
      data: body,
      options: Options(
        method: methodToString(method),
        headers: headers,
      ),
    );

    return response.data;
  } on DioException catch (e) {
    logger.e(e);
    switch (e.type) {
      case DioExceptionType.connectionError:
      case DioExceptionType.connectionTimeout:
        throw InternalServerException();
      default:
        throw UnknownException();
    }
  } catch (e) {
    logger.e(e);
    rethrow;
  }
}