UNPKG

awscdk-construct-scte-scheduler

Version:

AWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API

70 lines (69 loc) 2.6 kB
import { collectBodyString } from "../common"; export const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { if (encoded.length) { try { return JSON.parse(encoded); } catch (e) { if (e?.name === "SyntaxError") { Object.defineProperty(e, "$responseBodyText", { value: encoded, }); } throw e; } } return {}; }); export const parseJsonErrorBody = async (errorBody, context) => { const value = await parseJsonBody(errorBody, context); value.message = value.message ?? value.Message; return value; }; const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); const sanitizeErrorCode = (rawValue, removeNamespace = true) => { let cleanValue = rawValue; if (typeof cleanValue === "number") { cleanValue = cleanValue.toString(); } if (cleanValue.indexOf(",") >= 0) { cleanValue = cleanValue.split(",")[0]; } if (cleanValue.indexOf(":") >= 0) { cleanValue = cleanValue.split(":")[0]; } if (removeNamespace && cleanValue.indexOf("#") >= 0) { cleanValue = cleanValue.split("#")[1]; } return cleanValue; }; export const loadRestJsonErrorCode = (output, data) => { return loadErrorCode(output, data, true, ["header", "code", "type"]); }; export const loadJsonRpcErrorCode = (output, data, removeNamespace, queryCompat = false) => { return loadErrorCode(output, data, removeNamespace, queryCompat ? ["code", "header", "type"] : ["type", "code", "header"]); }; const loadErrorCode = ({ headers }, data, removeNamespace, order) => { while (order.length > 0) { const location = order.shift(); switch (location) { case "header": const headerKey = findKey(headers ?? {}, "x-amzn-errortype"); if (headerKey !== undefined) { return sanitizeErrorCode(headers[headerKey], removeNamespace); } break; case "code": const codeKey = findKey(data ?? {}, "code"); if (codeKey && data[codeKey] !== undefined) { return sanitizeErrorCode(data[codeKey], removeNamespace); } break; case "type": if (data?.__type !== undefined) { return sanitizeErrorCode(data.__type, removeNamespace); } break; } } };