@scaleway/sdk-client
Version:
Scaleway SDK Client
77 lines (76 loc) • 2.83 kB
JavaScript
import { mapInvalidRequestFromJSON } from "./non-standard/invalid-request-mapper.js";
import { mapUnknownResourceFromJSON } from "./non-standard/unknown-resource-mapper.js";
import { ScalewayError } from "./scw-error.js";
import { AlreadyExistsError } from "./standard/already-exists-error.js";
import { DeniedAuthenticationError } from "./standard/denied-authentication-error.js";
import { InvalidArgumentsError } from "./standard/invalid-arguments-error.js";
import { OutOfStockError } from "./standard/out-of-stock-error.js";
import { PermissionsDeniedError } from "./standard/permissions-denied-error.js";
import { PreconditionFailedError } from "./standard/precondition-failed-error.js";
import { QuotasExceededError } from "./standard/quotas-exceeded-error.js";
import { ResourceExpiredError } from "./standard/resource-expired-error.js";
import { ResourceLockedError } from "./standard/resource-locked-error.js";
import { ResourceNotFoundError } from "./standard/resource-not-found-error.js";
import { TooManyRequestsError } from "./standard/too-many-requests-error.js";
import { TransientStateError } from "./standard/transient-state-error.js";
const unmarshalStandardError = (type, status, body) => {
let error;
switch (type) {
case "denied_authentication":
error = DeniedAuthenticationError;
break;
case "invalid_arguments":
error = InvalidArgumentsError;
break;
case "out_of_stock":
error = OutOfStockError;
break;
case "permissions_denied":
error = PermissionsDeniedError;
break;
case "precondition_failed":
error = PreconditionFailedError;
break;
case "quotas_exceeded":
error = QuotasExceededError;
break;
case "expired":
error = ResourceExpiredError;
break;
case "not_found":
error = ResourceNotFoundError;
break;
case "locked":
error = ResourceLockedError;
break;
case "transient_state":
error = TransientStateError;
break;
case "already_exists":
error = AlreadyExistsError;
break;
case "too_many_requests":
error = TooManyRequestsError;
break;
default:
return null;
}
return error.fromJSON(status, body);
};
const unmarshalNonStandardError = (type, status, body) => {
switch (type) {
case "unknown_resource":
return mapUnknownResourceFromJSON(status, body);
case "invalid_request_error":
return mapInvalidRequestFromJSON(status, body);
default:
return null;
}
};
const parseScalewayError = (status, body) => {
const parsableError = typeof body.type === "string" && (unmarshalStandardError(body.type, status, body) ?? unmarshalNonStandardError(body.type, status, body));
return parsableError || new ScalewayError(status, body);
};
export {
parseScalewayError
};