apiRequest function
Implementation
Future apiRequest(
String method,
String apiUrl,
dynamic body, [
bool isFormData = false,
]) async {
final Uri url = Uri.parse('$apiUrl');
final Map<String, String> defaultHeaders = {
"Authorization": "$claimsToken",
if (isFormData) "Content-Type": "application/json",
};
final Map<String, String> combinedHeaders = {
...defaultHeaders,
};
try {
http.Response response;
switch (method.toUpperCase()) {
case 'GET':
response = await http.get(url, headers: combinedHeaders);
break;
case 'POST':
if (isFormData == true) {
response = await http.post(url,
headers: combinedHeaders, body: jsonEncode(body));
} else {
response = await http.post(url, headers: combinedHeaders, body: body);
}
break;
default:
throw Exception('Unsupported HTTP method: $method');
}
final int statusCode = response.statusCode;
var decodedResponse = json.decode(response.body);
if (statusCode == 200) {
if (response.headers.containsKey('Authorization')) {
String? newToken = response.headers['Authorization'];
SharedPreferences _prefs = await SharedPreferences.getInstance();
_prefs.setString('claimsToken', newToken.toString());
claimsToken = newToken.toString();
claimsToken = await _prefs.getString('claimsToken');
}
return decodedResponse;
} else if (statusCode == 401) {
} else {
throw Exception(
'Error: ${response.statusCode} - ${decodedResponse['message'] ?? 'Unknown error'}');
}
} catch (err, stackTrace) {
print("Error occurred: $stackTrace");
}
}