callApi<T> method
Implementation
@override
Future<T> callApi<T>(
{required RouteValue routeValue, Map<String, dynamic>? body}) async {
if (baseUrl.isEmpty) {
throw StokedError(
'The SDK have not been INITIALISED , Initialse the SDK first to proceed');
}
if (_headers['Authorization'] == null) {
throw StokedError('AuthToken has to be set before calling API\'s');
}
Uri url = Uri.parse(baseUrl + routeValue.endpoint);
late Response response;
switch (routeValue.callType) {
case CallType.post:
response =
await http.post(url, headers: _headers, body: json.encode(body));
break;
case CallType.get:
response = await http.get(url, headers: _headers);
break;
case CallType.del:
response = await http.delete(url, headers: _headers);
break;
default:
throw StokedError('No method mentioned');
}
int statusCode = response.statusCode;
if (statusCode != 200 && statusCode != 201) {
responseError(statusCode);
}
final Map<String, dynamic> data = jsonDecode(response.body);
if (data['status']?.toString().toLowerCase() == 'error') {
throw StokedError(data['message']);
}
return routeValue.reponseMapper(response.body) as T;
}