prepareRequest function
Future<PreparedRequest>
prepareRequest(
- RequestApi requestApi, {
- required ResponseType responseType,
Implementation
Future<PreparedRequest> prepareRequest(
RequestApi requestApi, {
required ResponseType responseType,
}) async {
fastDioLog(requestApi.requestUrl);
if (requestApi.resolvedQueryParameters.isNotEmpty) {
fastDioLog(
'Query Parameters: ${json.encode(requestApi.resolvedQueryParameters)}',
);
}
fastDioLog(json.encode(requestApi.body));
final Map<String, String> globalHeaders = await FastDioHeader().getHeaders();
final Map<String, String> requestHeaders = {
...?requestApi.headers,
...globalHeaders,
};
fastDioLog('Request Headers: $requestHeaders');
final bool isMultipart =
requestApi.isMultipartRequest || requestApi.files.isNotEmpty;
dynamic data;
if (isMultipart) {
data = FormData.fromMap(_buildMultipartMap(requestApi));
} else if (requestApi.body.isNotEmpty) {
data = requestApi.body;
}
final RequestDioOptions? dioOptions = requestApi.dioOptions;
Options options = Options(
method: requestApi.method,
headers: requestHeaders,
responseType: responseType,
contentType: _resolveContentType(requestApi, isMultipart),
validateStatus: (_) => true,
);
if (dioOptions != null) {
options = dioOptions.mergeWith(options);
}
final Map<String, dynamic> queryParameters = requestApi.resolvedQueryParameters;
return PreparedRequest(
url: requestApi.requestUrl,
queryParameters: queryParameters.isEmpty ? null : queryParameters,
data: data,
options: options,
cancelToken: dioOptions?.cancelToken,
dioOptions: dioOptions,
);
}