requestWithoutParse method

Future<Map<String, dynamic>?> requestWithoutParse({
  1. String? apiUrl,
  2. required dynamic query,
  3. Map<String, String>? parameters,
})

Implementation

Future<Map<String, dynamic>?> requestWithoutParse(
    {String? apiUrl,
    required dynamic query,
    Map<String, String>? parameters}) async {
  if (apiUrl == null) apiUrl = _apiURL;
  if (parameters == null) parameters = defaultParams;

  Response? response;

  if (kIsWeb) {
    response = await _webAPIManager.post(
      apiUrl,
      body: jsonEncode(query),
    );
  } else {
    response = await _apiManager.post(
      apiUrl,
      body: jsonEncode(query),
    );
  }
  print(response?.body);

  if (response == null)
    throw AppException(true,
        beautifulMsg: 'Error occured',
        title: "Server Error",
        code: 0,
        uglyMsg: "No response from server");

  if (response.statusCode > 400) {
    throw AppException(true,
        beautifulMsg: ErrorUtil.getMessageFromCode(response.statusCode),
        code: response.statusCode,
        title: 'HTTP ERROR');
  }

  Map<String, dynamic> myData = json.decode(response.body);
  // has error
  if (myData.containsKey("errors")) {
    String? error = myData['errors'][0]['message'];
    int? code = myData['errors'][0]['extensions']['code'];
    String? title = myData['errors'][0]['extensions']['title'];

    throw AppException(
      true,
      beautifulMsg: error ?? 'Error occured',
      title: title ?? "Server Error",
      code: code ?? 200,
      uglyMsg: myData.toString(),
    );
  }

  return myData['data'];
}