sendRequest method
Implementation
CancellableRequest<http.Response> sendRequest(
String method,
String endpoint, {
dynamic data,
Map<String, String>? headers,
bool isMultipart = false,
Duration? timeout,
String? baseUrlOverride,
}) {
final effectiveTimeout = timeout ?? requestTimeout;
final effectiveBaseUrl = baseUrlOverride ?? baseUrl;
final url = Uri.parse('$effectiveBaseUrl/$endpoint');
Future<http.Response> future;
if (isMultipart) {
future = sendMultipartRequest(
method,
url,
data: data,
headers: headers,
client: _client,
).timeout(effectiveTimeout);
} else {
switch (method.toUpperCase()) {
case 'GET':
future = _client.get(url, headers: headers).timeout(effectiveTimeout);
break;
case 'POST':
future = _client
.post(url, headers: headers, body: jsonEncode(data))
.timeout(effectiveTimeout);
break;
case 'PATCH':
future = _client
.patch(url, headers: headers, body: jsonEncode(data))
.timeout(effectiveTimeout);
break;
case 'PUT':
future = _client
.put(url, headers: headers, body: jsonEncode(data))
.timeout(effectiveTimeout);
break;
case 'DELETE':
future = _client
.delete(url, headers: headers)
.timeout(effectiveTimeout);
break;
default:
throw UnsupportedError('HTTP method $method not supported');
}
}
future = future.whenComplete(() {});
return _CancellableRequestWithCallback(_client, future, () {});
}