get<T> method

Future<Response<T>> get<T>(
  1. Map<String, dynamic> params, {
  2. required FromJsonFactory<T> fromJsonFactory,
  3. void callback(
    1. RazorpayApiException?,
    2. Response<T>?
    )?,
})

Implementation

Future<Response<T>> get<T>(
  Map<String, dynamic> params, {
  required FromJsonFactory<T> fromJsonFactory,
  void Function(RazorpayApiException?, Response<T>?)?
      callback, // Updated callback signature
}) async {
  try {
    final rawResponse = await client.get<Map<String, dynamic>>(
      getEntityUrl(params),
      queryParameters: params['data']
          as Map<String, dynamic>?, // Pass data as query params for GET
    );

    if (rawResponse.data == null) {
      throw StateError(
        'API response data was null for GET request to ${getEntityUrl(params)}',
      );
    }

    final resultData = fromJsonFactory(rawResponse.data!);

    final typedResponse = Response<T>(
      data: resultData,
      requestOptions: rawResponse.requestOptions,
      statusCode: rawResponse.statusCode,
      statusMessage: rawResponse.statusMessage,
      isRedirect: rawResponse.isRedirect,
      redirects: rawResponse.redirects,
      extra: rawResponse.extra,
      headers: rawResponse.headers,
    );

    callback?.call(null, typedResponse);
    return typedResponse;
  } on DioException catch (error) {
    final normalizedError = _normalizeError(error);
    callback?.call(normalizedError, null);
    throw normalizedError;
  } catch (error) {
    final exception =
        RazorpayApiException(message: 'An unexpected error occurred: $error');
    callback?.call(exception, null);
    throw exception;
  }
}