request static method

Future<MguHttpResponse> request({
  1. required MguHttpRequestMethod method,
  2. required String baseUrl,
  3. required MguHttpRequestInfo requestInfo,
  4. Duration sendTimeout = const Duration(seconds: 10),
  5. Duration connectTimeout = const Duration(seconds: 5),
  6. Duration receiveTimeout = const Duration(seconds: 15),
})

Implementation

static Future<MguHttpResponse> request({
  required final MguHttpRequestMethod method,
  required final String baseUrl,
  required final MguHttpRequestInfo requestInfo,
  final Duration sendTimeout = const Duration(seconds: 10),
  final Duration connectTimeout = const Duration(seconds: 5),
  final Duration receiveTimeout = const Duration(seconds: 15),
}) async {
  _MguHttpRequestLogger.logRequest(method: method, requestInfo: requestInfo);

  late final dio.Response? response;
  String? message;
  try {
    response = await method._call(
      baseOptions: dio.BaseOptions(
        baseUrl: baseUrl,
        sendTimeout: sendTimeout,
        connectTimeout: connectTimeout,
        receiveTimeout: receiveTimeout,
      ),
      requestInfo: requestInfo,
    );
  } catch (e) {
    if (e is! dio.DioException) {
      rethrow;
    }
    response = e.response;
    message =
        _MguHttpRequestLogger.generateErrorString(method, requestInfo, e);
    if (response == null) {
      throw NoResponse(
        _MguHttpRequestLogger.generateErrorString(method, requestInfo, e),
      );
    }
  }

  _MguHttpRequestLogger.logResponse(
    method: method,
    requestInfo: requestInfo,
    response: response,
  );
  final data = response.data as Map;
  final resultCode = data['resultCode'] as String;
  final realData = data['data'] as Map;
  return MguHttpResponse(
    data: realData,
    resultCode: resultCode,
    message: message,
  );
}