get static method

Future<ApiResponse> get({
  1. required Map<String, dynamic>? requestHeaders,
  2. required Map<String, dynamic>? requestParams,
  3. required String? endpoint,
})

Implementation

static Future<ApiResponse> get({
  required Map<String, dynamic>? requestHeaders,
  required Map<String, dynamic>? requestParams,
  required String? endpoint,
}) async {
  if (endpoint == null || endpoint.isEmpty) {
    return ApiResponse(
      status: false,
      message: 'No endpoint specified',
      response: [],
    );
  }

  try {
    debugPrint(requestHeaders?.toString());

    var uri = Uri.parse('${UrlServices.baseUrl}/$endpoint');
    if (requestParams != null && requestParams.isNotEmpty) {
      uri = uri.replace(queryParameters: requestParams.map((k, v) => MapEntry(k, v.toString())));
    }

    var headers = {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
      if (requestHeaders != null) ...requestHeaders.cast<String, String>(),
    };

    var response = await http.get(uri, headers: headers).timeout(const Duration(minutes: 2));

    debugPrint('RESPONSE during GET');
    debugPrint(response.body);

    if (validStatusCodes.contains(response.statusCode)) {
      Map<String, dynamic> responseJson = json.decode(response.body);
      if (responseJson.isEmpty) {
        return ApiResponse(
          status: false,
          message: 'No response data from server.',
          response: [],
        );
      }

      return ApiResponse.fromJson(responseJson);
    } else {
      return ApiResponse(
        status: false,
        message: 'Unexpected server response: ${response.statusCode}',
        response: [],
      );
    }
  } on http.ClientException catch (e) {
    return ApiResponse(
      status: false,
      message: 'Network error: ${e.message}',
      response: [],
    );
  } catch (e) {
    return ApiResponse(
      status: false,
      message: 'Unexpected error: ${e.toString()}',
      response: [],
    );
  }
}