UNPKG

awscdk-construct-scte-scheduler

Version:

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

39 lines (38 loc) 1.52 kB
import { NormalizedSchema } from "@smithy/core/schema"; import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; import { FromStringShapeDeserializer } from "./FromStringShapeDeserializer"; export class HttpInterceptingShapeDeserializer { constructor(codecDeserializer, codecSettings) { this.codecDeserializer = codecDeserializer; this.stringDeserializer = new FromStringShapeDeserializer(codecSettings); } setSerdeContext(serdeContext) { this.stringDeserializer.setSerdeContext(serdeContext); this.codecDeserializer.setSerdeContext(serdeContext); this.serdeContext = serdeContext; } read(schema, data) { const ns = NormalizedSchema.of(schema); const traits = ns.getMergedTraits(); const toString = this.serdeContext?.utf8Encoder ?? toUtf8; if (traits.httpHeader || traits.httpResponseCode) { return this.stringDeserializer.read(ns, toString(data)); } if (traits.httpPayload) { if (ns.isBlobSchema()) { const toBytes = this.serdeContext?.utf8Decoder ?? fromUtf8; if (typeof data === "string") { return toBytes(data); } return data; } else if (ns.isStringSchema()) { if ("byteLength" in data) { return toString(data); } return data; } } return this.codecDeserializer.read(ns, data); } }