47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
export default function getStatusCode({ networkError, graphQLErrors }) {
|
|
if (networkError?.graphQLErrors) {
|
|
graphQLErrors = networkError.graphQLErrors;
|
|
networkError = null;
|
|
}
|
|
if (networkError) {
|
|
return networkError.statusCode || 0;
|
|
}
|
|
if (graphQLErrors) {
|
|
let code;
|
|
for (const err of graphQLErrors) {
|
|
if (err.extensions.http) {
|
|
code = err.extensions.http;
|
|
break;
|
|
}
|
|
if (err.extensions.statusCode) {
|
|
code = err.extensions.statusCode;
|
|
break;
|
|
}
|
|
if (err.extensions.code) {
|
|
code = err.extensions.code;
|
|
break;
|
|
}
|
|
}
|
|
// console.log({ code });
|
|
switch (code) {
|
|
case "validation-failed":
|
|
case "constraint-violation":
|
|
case "not-supported":
|
|
return 422;
|
|
case "remote-schema-error":
|
|
case "INTERNAL_SERVER_ERROR":
|
|
return 500;
|
|
case "invalid-jwt":
|
|
case "UNAUTHENTICATED":
|
|
return 401;
|
|
default:
|
|
if (typeof code !== "number") {
|
|
code = parseInt(code, 10);
|
|
}
|
|
if (isNaN(code)) {
|
|
code = 400;
|
|
}
|
|
return code;
|
|
}
|
|
}
|
|
}
|