request method

  1. @protected
Future<RemoteObject> request(
  1. RequestParams requestParams
)
inherited

Centralized method to handle all HTTP requests.

Implementation

@protected
Future<RemoteObject> request(RequestParams requestParams) async {
  final callUri = requestParams.modifyUriWithUrlParams(uri);

  final body = requestParams.encodeBody?.call();

  observer.onCall(
    callUri,
    body: body?.toString(),
    datasourceName: runtimeType.toString(),
  );

  final RequestResponse response;
  try {
    response = await switch (requestParams) {
      DeleteParams() => driver.delete(
          callUri,
          headers: requestParams.headers,
          body: body,
        ),
      PutParams() => driver.put(
          callUri,
          headers: requestParams.headers,
          body: body,
        ),
      GetParams() => driver.get(callUri, headers: requestParams.headers),
      PatchParams() => driver.patch(
          callUri,
          headers: requestParams.headers,
          body: body,
        ),
      PostParams() => driver.post(
          callUri,
          headers: requestParams.headers,
          body: body,
        ),
    };
  } catch (error, stackTrace) {
    observer.onDriverException(
      error,
      stackTrace,
      datasourceName: runtimeType.toString(),
      requestBody: body?.toString(),
      requestUri: callUri,
      requestHeaders: requestParams.headers,
    );
    rethrow;
  }
  return checkInformation(
    requestResponse: response,
    requestHeaders: requestParams.headers,
    requestUri: callUri,
    requestBody: body,
  );
}