ResponseModal<T>.fromDioResponse constructor
ResponseModal<T>.fromDioResponse (
- Response response
Factory for Dio Response
Implementation
factory ResponseModal.fromDioResponse(Response response) {
Map jsonResponse = {};
try {
if (response.data is Map) {
jsonResponse = response.data;
} else if (response.data is String) {
jsonResponse = convert.jsonDecode(response.data);
} else {
jsonResponse = {'message': 'Unexpected response format'};
}
} catch (e) {
jsonResponse['message'] = 'Internal Server Error';
jsonResponse['error'] = response.data ?? e.toString();
}
try {
if (jsonResponse['message'] == 'Validation failed') {
jsonResponse['error'] = jsonResponse['error'] ?? jsonResponse['errors'];
jsonResponse['message'] = '';
List<String> errors = [];
(jsonResponse['error'] as Map).forEach((key, value) {
for (var element in (value as List)) {
errors.add(element.toString());
}
});
jsonResponse['message'] = errors.join('\n');
}
} catch (e) {
print('Error in catch block...$e');
}
switch (response.statusCode) {
case 200:
case 201:
return ResponseModal(
status: jsonResponse['status'] ?? 0,
message: jsonResponse['message'] ?? 'static message',
error: jsonResponse['error'] ??
jsonResponse['errors'] ??
{'error': 'static error'},
data: jsonResponse['data'] ?? jsonResponse,
fullData: jsonResponse,
);
case 400:
return ResponseModal(
status: jsonResponse['status'] ?? 0,
message: jsonResponse['message'] ?? 'Bad Request',
error: jsonResponse['error'] ??
jsonResponse['errors'] ??
{'error': 'static error'},
data: jsonResponse['data'] ?? jsonResponse,
fullData: jsonResponse,
);
case 401:
return ResponseModal(
status: 0,
message:
jsonResponse['message'] ?? 'Auth token invalid app end message',
error: jsonResponse['error'] ?? jsonResponse['errors'] ?? {},
data: jsonResponse['data'] ?? jsonResponse,
fullData: jsonResponse,
);
case 500:
try {
return ResponseModal(
status: 0,
message:
jsonResponse['message'] ?? 'Internal server error message',
error: jsonResponse['error'] ?? jsonResponse['errors'] ?? {},
data: jsonResponse['data'] ?? jsonResponse,
fullData: jsonResponse,
);
} catch (e) {
return ResponseModal(
status: 0,
message: jsonResponse.toString(),
error: jsonResponse['error'] ?? jsonResponse['errors'] ?? {},
data: jsonResponse['data'] ?? jsonResponse,
fullData: jsonResponse,
);
}
default:
return ResponseModal(
status: 0,
message: jsonResponse['message'] ??
'Default message ${response.statusCode}',
error: jsonResponse['error'] ?? jsonResponse['errors'] ?? {},
data: jsonResponse['data'] ?? jsonResponse,
fullData: jsonResponse,
);
}
}