80 lines
1.8 KiB
JavaScript
80 lines
1.8 KiB
JavaScript
|
|
export function ApiError(message, response) {
|
|
this.message = (message || "Unknown API Error Occurred");
|
|
this.response = response;
|
|
}
|
|
ApiError.prototype = Object.assign(new Error(), {
|
|
name: "ApiError",
|
|
|
|
responseCode: function() {
|
|
if (this.response) {
|
|
return this.response.status;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
});
|
|
|
|
export function ApiServerError(message, response) {
|
|
this.message = (message || "Unknown API Server Error Occurred");
|
|
this.response = response;
|
|
}
|
|
ApiServerError.prototype = Object.assign(new ApiError(), {
|
|
name: "ApiServerError"
|
|
});
|
|
|
|
|
|
export function ApiNotFoundError(message, response) {
|
|
this.message = (message || "Unknown API Server Error Occurred");
|
|
this.response = response;
|
|
}
|
|
ApiNotFoundError.prototype = Object.assign(new ApiError(), {
|
|
name: "ApiNotFoundError"
|
|
});
|
|
|
|
|
|
export function ApiValidationError(message, response, json) {
|
|
this.message = (message || "Server returned a validation error");
|
|
this.response = response;
|
|
this.json = json;
|
|
}
|
|
ApiValidationError.prototype = Object.assign(new ApiError(), {
|
|
name: "ApiValidationError",
|
|
|
|
validationErrors: function() {
|
|
const errors = new Map();
|
|
if (this.json) {
|
|
for (let key in this.json) {
|
|
errors.set(key, this.json[key]);
|
|
}
|
|
} else {
|
|
errors.set("base", ["unknown error"]);
|
|
}
|
|
return errors;
|
|
},
|
|
|
|
formattedValidationErrors: function() {
|
|
const errors = [];
|
|
if (this.json) {
|
|
for (let key in this.json) {
|
|
errors.push(key + ": " + this.json[key].join(", "));
|
|
}
|
|
return errors;
|
|
} else {
|
|
return ["unable to determine validation errors"];
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
export function onlyFor(errorType, handler) {
|
|
return (err) => {
|
|
if (err instanceof errorType) {
|
|
return handler(err);
|
|
} else {
|
|
return Promise.reject(err);
|
|
}
|
|
};
|
|
}
|
|
|