request method

Future request(
  1. APIRequest request
)

Implementation

Future<dynamic> request(APIRequest request) async {
  try {
    final url = request.baseUrl + request.endpoint;
    logger.i(url, error: "Request │ ${request.method.name.toUpperCase()}");
    logger.i(request.headers, error: "Headers");
    logger.i(request.query, error: "Request Parameters");
    logger.i(request.body, error: "Request Body");

    final response = await _client.request<dynamic>(
      url,
      data: request.body ?? request.query,
      options: Options(
        contentType: request.contentType,
        headers: request.headers,
        method: request.method.name.toUpperCase(),
      ),
      queryParameters: request.query?.isNotEmpty == true
          ? request.query
          : null,
    );
    return _returnResponse(
      response,
      request,
      isBaseResponse: request.isBaseResponse,
    );
  } on TimeoutException catch (e) {
    throw TimeOutError(e.message, code: e.message);
  } on SocketException catch (e) {
    throw FetchDataError(e.message, code: e.message);
  } on DioException catch (e) {
    throw _handleDioError(e);
  } catch (e) {
    logger.e('Unhandled error in APIProvider: $e');
    throw FetchDataError(e.toString(), code: e.runtimeType.toString());
  }
}