fromResponse static method
Implementation
static ServerException fromResponse(http.Response response) {
List<String>? messages;
String? code;
String? serverStack;
int? statusCode;
try {
final Map<String, dynamic> decoded = jsonDecode(response.body);
if (decoded.containsKey("error")) {
final Map<String, dynamic> error = decoded["error"];
if (error.containsKey("messages")) {
messages = List<String>.from(error["messages"]);
} else if (error.containsKey("message")) {
messages = [
error["message"],
];
}
if (error.containsKey("stack")) {
serverStack = error["stack"];
}
if (error.containsKey("code")) {
code = error["code"];
}
statusCode = error["statusCode"] ?? response.statusCode;
} else if (decoded.containsKey("messages")) {
messages = List<String>.from(decoded["messages"]);
}
if (code == null && decoded.containsKey("errorCode")) {
code = decoded["errorCode"];
}
if (serverStack == null && decoded.containsKey("stack")) {
serverStack = decoded["stack"];
}
return ServerException(
messages: messages ?? [],
statusCode: statusCode ?? response.statusCode,
code: code ?? response.reasonPhrase,
serverStack: serverStack,
original: response.body,
request: response.request,
);
} catch (e) {
// do nothing
}
return ServerException(
statusCode: response.statusCode,
serverStack: serverStack,
code: response.reasonPhrase,
request: response.request,
messages: [
response.body.isNotEmpty ? response.body : response.reasonPhrase ?? response.body,
],
);
}