Improve error handling for read-only applications

Applications pending approval will return a different response body than what is presently supported.

Below is a copy of the actual response that comes back in this scenario:
```
{"status":401,"rateLimitTimeout":null,"body":{"request":"/1.1/statuses/update.json","error":"Read-only application cannot POST."}}
```

Whereas the current implementation assumes the presence of an `errors` array, reading off the first element (i.e. `result.body.errors[0]`), the above scenario throws an exception as `result.body.errors` is now `undefined` and cannot be indexed).

The proposed update seeks to account for this while retaining existing functionality and has been tested (error message in debug now properly says "Read-only application cannot POST."
This commit is contained in:
Matt Borja 2020-10-27 11:19:28 -07:00 committed by GitHub
parent 07e5d9fd65
commit 5c9680db1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -642,7 +642,12 @@ module.exports = function(RED) {
node.status({});
} else {
node.status({fill:"red",shape:"ring",text:"twitter.status.failed"});
node.error(result.body.errors[0].message,msg);
if ('error' in result.body && typeof result.body.error === 'string') {
node.error(result.body.error,msg);
} else {
node.error(result.body.errors[0].message,msg);
}
}
}).catch(function(err) {
node.status({fill:"red",shape:"ring",text:"twitter.status.failed"});