UNPKG

@scaleway/sdk-client

Version:
37 lines (36 loc) 1.19 kB
import { ScalewayError } from "../scw-error.js"; import { InvalidArgumentsError } from "../standard/invalid-arguments-error.js"; import { QuotasExceededError } from "../standard/quotas-exceeded-error.js"; import { isRecordOfStringArray } from "../types.js"; class InvalidRequestMapper { static fromJSON(status, obj) { if (typeof obj.message === "string" && obj.message.toLowerCase().includes("quota exceeded for this resource")) { return new QuotasExceededError(status, obj, [ { current: 0, quota: 0, resource: typeof obj.resource === "string" ? obj.resource : "" } ]); } const fields = obj.fields && isRecordOfStringArray(obj.fields) ? obj.fields : {}; const fieldsMessages = Object.entries(fields); if (fieldsMessages.length) { return new InvalidArgumentsError( status, obj, fieldsMessages.map( ([argumentName, messages]) => messages.map((helpMessage) => ({ argumentName, helpMessage, reason: "constraint" })) ).flat() ); } return new ScalewayError(status, obj); } } export { InvalidRequestMapper };