request method

Future<Response> request({
  1. required String endPoint,
  2. required String method,
  3. Map<String, dynamic>? queryParameters,
  4. dynamic body,
  5. String? token,
  6. bool isAuthorize = false,
  7. Map<String, String>? extraHeaders,
  8. CancelToken? cancelToken,
})

Unified API request handler (supports GET & POST)

Implementation

Future<Response> request({
  required String endPoint,
  required String method, // 'GET' or 'POST'
  Map<String, dynamic>? queryParameters,
  dynamic body,
  String? token,
  bool isAuthorize = false,
  Map<String, String>? extraHeaders,
  CancelToken? cancelToken,
}) async {
  try {
    final headers = _buildHeaders(
      token: token,
      isAuthorize: isAuthorize,
      extraHeaders: extraHeaders,
    );

    final response = await _dio.request(
      endPoint,
      queryParameters: queryParameters,
      data: body,
      options: Options(
        method: method.toUpperCase(),
        headers: headers,
      ),
      cancelToken: cancelToken,
    );

    if (response.statusCode != null &&
        response.statusCode! >= 200 &&
        response.statusCode! < 300) {
      return response;
    } else {
      throw DioException(
        requestOptions: response.requestOptions,
        response: response,
      );
    }
  } on DioException catch (e) {
    // if (e.type == DioExceptionType.cancel) {
    //   pagyLog("🛑 Request cancelled: ${e.message}", name: endPoint);
    //   rethrow; // or just return Future.error if you want
    // }
    pagyLog('${e.response}', name: endPoint);
    return _handleApiError(e);
  } catch (e) {
    pagyLog('Unexpected error in $method request: $e', name: endPoint);
    rethrow;
  }
}