ApiResponse.fromResponse constructor
ApiResponse.fromResponse(
- Response response
Factory method to create an ApiResponse from an HTTP response object.
Implementation
factory ApiResponse.fromResponse(Response response) {
int code = response.statusCode;
dynamic body = jsonDecode(response.body);
List errors = [];
String message = "";
switch (code) {
case 200:
case 201:
try {
message = body is Map ? body['message'] ?? "" : "";
} catch (error) {
// Handle any error in reading message
message = "";
}
break;
case 400:
try {
message = body is Map ? body['errors'][0]['message'] ?? "" : "";
errors.add(message);
} catch (error) {
message = body is Map ? body['message'] ?? "" : "";
errors.add(message);
}
break;
case 401:
try {
message = body is Map ? body['message'] ?? "Unauthorized" : "Unauthorized";
errors.add(message);
} catch (error) {
errors.add("Unauthorized");
}
break;
case 408:
message = "Server timeout, please try again later.";
errors.add(message);
break;
case 429:
try {
message = body is Map ? body['message'] ?? "Too many requests" : "Too many requests";
errors.add(message);
} catch (error) {
errors.add("Too many requests");
}
break;
default:
message = body is Map ? body["message"] ?? "Something went wrong." : "Something went wrong.";
break;
}
return ApiResponse(
code: code,
message: message,
body: body,
errors: errors,
);
}