prepareResponse method
Response
prepareResponse(
- Response res, {
- ResponseType? responseType,
})
inherited
Implementation
Response prepareResponse(http.Response res, {ResponseType? responseType}) {
responseType ??= ResponseType.json;
String? warnings = res.headers['x-appwrite-warning'];
if (warnings != null) {
warnings.split(';').forEach((warning) => log('Warning: $warning'));
}
if (res.statusCode >= 400) {
final isJson = (res.headers['content-type'] ?? '').contains(
'application/json',
);
// Empty bodies still arrive with application/json (e.g. truncated
// proxy/edge errors). Avoid FormatException from json.decode('').
if (isJson && res.body.isNotEmpty) {
final response = json.decode(res.body);
throw AppwriteException(
response['message'],
response['code'],
response['type'],
res.body,
);
} else {
throw AppwriteException(
res.body.isEmpty
? 'Unexpected empty response with status ${res.statusCode}'
: res.body,
res.statusCode,
'',
res.body,
);
}
}
dynamic data;
if ((res.headers['content-type'] ?? '').contains('application/json')) {
if (responseType == ResponseType.json) {
data = json.decode(res.body);
} else if (responseType == ResponseType.bytes) {
data = res.bodyBytes;
} else {
data = res.body;
}
} else {
if (responseType == ResponseType.bytes) {
data = res.bodyBytes;
} else {
data = res.body;
}
}
return Response(data: data);
}