Added Server Response Error Handling
Presently the spee.ch client will error out if it received an unexpected response, resulting in hangs and a very vague JSON parsing error. This failsafe will catch the known issue of server request size limits causing 413 responses if misconfigured, making things easier to diagnose, as well as catching any other unexpected responses cleanly. Further specific behaviours can be added to ensure administrators spend less time debugging simple configuration issues. The 413 error response should be fairly self explanatory, sufficient to not need further documentation, though adding an addendum to the README.md would aid other developers have a smooth experience.
This commit is contained in:
parent
68d2f303c1
commit
82ab3b47b1
1 changed files with 23 additions and 8 deletions
|
@ -23,14 +23,29 @@ export const makePublishRequestChannel = (fd, isUpdate) => {
|
||||||
// set state change handler
|
// set state change handler
|
||||||
xhr.onreadystatechange = () => {
|
xhr.onreadystatechange = () => {
|
||||||
if (xhr.readyState === 4) {
|
if (xhr.readyState === 4) {
|
||||||
const response = JSON.parse(xhr.response);
|
switch (xhr.status) {
|
||||||
if ((xhr.status === 200) && response.success) {
|
case 413:
|
||||||
emitter({success: response});
|
emitter({error: new Error("Unfortunately it appears this web server " +
|
||||||
emitter(END);
|
"has been misconfigured, please inform the service administrators " +
|
||||||
} else {
|
"that they must set their nginx/apache request size maximums higher " +
|
||||||
emitter({error: new Error(response.message)});
|
"than their file size limits.")});
|
||||||
emitter(END);
|
emitter(END);
|
||||||
}
|
break;
|
||||||
|
case 200:
|
||||||
|
var response = JSON.parse(xhr.response);
|
||||||
|
if (response.success) {
|
||||||
|
emitter({success: response});
|
||||||
|
emitter(END);
|
||||||
|
} else {
|
||||||
|
emitter({error: new Error(response.message)});
|
||||||
|
emitter(END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
emitter({error: new Error("Received an unexpected response from " +
|
||||||
|
"server: " + xhr.status)});
|
||||||
|
emitter(END);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// open and send
|
// open and send
|
||||||
|
|
Loading…
Reference in a new issue