request method
Implementation
Future<response_helper.Response> request(
ApiHelperPathItem item, {
String? token,
String? contentType,
}) async {
try {
final finalToken = token ?? item.tokenOverride ?? _token;
final headers = <String, dynamic>{};
if (finalToken != null && finalToken.isNotEmpty) {
headers["Authorization"] = "Bearer $finalToken";
}
if (contentType != null) {
headers["Content-Type"] = contentType;
}
final options = headers.isNotEmpty ? Options(headers: headers) : null;
final url = item.baseUrlOverride != null
? "${item.baseUrlOverride}${item.path}"
: item.path;
late Response response;
switch (item.requestType) {
case ApiHelperRequestType.get:
response = await _dio.get(url,
queryParameters: item.queryParameters, options: options);
break;
case ApiHelperRequestType.post:
response = await _dio.post(url,
data: item.data,
queryParameters: item.queryParameters,
options: options);
break;
case ApiHelperRequestType.put:
response = await _dio.put(url,
data: item.data,
queryParameters: item.queryParameters,
options: options);
break;
case ApiHelperRequestType.delete:
response = await _dio.delete(url,
data: item.data,
queryParameters: item.queryParameters,
options: options);
break;
case ApiHelperRequestType.patch:
response = await _dio.patch(url,
data: item.data,
queryParameters: item.queryParameters,
options: options);
break;
case ApiHelperRequestType.head:
// TODO: Handle this case.
break;
}
if (response.statusCode == null ||
response.statusCode! < 200 ||
response.statusCode! >= 300) {
return response_helper.Response.error(
"Status Code: ${response.statusCode}",
);
}
return responseResolver != null
? responseResolver!(response.data)
: response_helper.Response.success(response.data);
} on DioException catch (e) {
return response_helper.Response.error(e.message ?? "Dio error");
} catch (e) {
return response_helper.Response.error(e.toString());
}
}