request method
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,
);
}