Handle text response errors (#301)

* Parse text error response to json Message field

* Do not output object.toString, prefer object serialization
This commit is contained in:
Matt Gibson 2021-03-09 10:58:17 -06:00 committed by GitHub
parent f29afc7cf7
commit 8541027d40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -7,7 +7,8 @@ export class Response {
if (typeof (error) === 'string') {
res.message = error;
} else {
res.message = error.message != null ? error.message : error.toString();
res.message = error.message != null ? error.message :
error.toString() === '[object Object]' ? JSON.stringify(error) : error.toString();
}
res.data = data;
return res;

View File

@ -1282,6 +1282,8 @@ export class ApiService implements ApiServiceAbstraction {
let responseJson: any = null;
if (this.isJsonResponse(response)) {
responseJson = await response.json();
} else if (this.isTextResponse(response)) {
responseJson = {Message: await response.text()};
}
return new ErrorResponse(responseJson, response.status, tokenError);
@ -1357,4 +1359,9 @@ export class ApiService implements ApiServiceAbstraction {
const typeHeader = response.headers.get('content-type');
return typeHeader != null && typeHeader.indexOf('application/json') > -1;
}
private isTextResponse(response: Response): boolean {
const typeHeader = response.headers.get('content-type');
return typeHeader != null && typeHeader.indexOf('text') > -1;
}
}