as-app/src/network/getStatusCode.js

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;
}
}
}