@scaleway/sdk-client
Version:
Scaleway SDK Client
37 lines (36 loc) • 1.19 kB
JavaScript
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
};