get<T> method

Future<Either<BaseException, T>> get<T>(
  1. String path, {
  2. Map<String, dynamic>? queryParameters,
  3. required dynamic mapper(
    1. dynamic json
    ),
  4. Options? options,
  5. VoidDataFunction<double>? onProgress,
  6. List<JsonFieldAliasModel> jsonSchemas = const [],
  7. RequestEnum type = .get,
})

Implementation

Future<Either<BaseException, T>> get<T>(
  String path, {
  Map<String, dynamic>? queryParameters,
  required Function(dynamic json) mapper,
  Options? options,
  VoidDataFunction<double>? onProgress,
  List<JsonFieldAliasModel> jsonSchemas = const [],
  RequestEnum type = .get,
}) async {
  try {
    Response response = await switch (type) {
      .get => _dio.get(
        path,
        queryParameters: queryParameters,
        options: options,
        onReceiveProgress: (received, total) => onProgress?.call(received / total),
      ),
      .post => _dio.post(
        path,
        data: queryParameters,
        options: options,
        onReceiveProgress: (received, total) => onProgress?.call(received / total),
      ),
    };

    // Нормализация по входящей схеме
    if (jsonSchemas.isNotEmpty) {
      response.data = JsonNormalizer.normalize(
        response.data,
        jsonSchemas,
      );
    }

    return Right(mapper(response.data));
  } catch (err, s) {
    return ErrorHandler.fromError(err, stackTrace: s);
  }
}