UNPKG

awscdk-construct-scte-scheduler

Version:

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

60 lines (55 loc) 1.91 kB
'use strict'; var protocols = require('@smithy/core/protocols'); const validate = (str) => typeof str === "string" && str.indexOf("arn:") === 0 && str.split(":").length >= 6; const parse = (arn) => { const segments = arn.split(":"); if (segments.length < 6 || segments[0] !== "arn") throw new Error("Malformed ARN"); const [, partition, service, region, accountId, ...resource] = segments; return { partition, service, region, accountId, resource: resource.join(":"), }; }; const build = (arnObject) => { const { partition = "aws", service, region, accountId, resource } = arnObject; if ([service, region, accountId, resource].some((segment) => typeof segment !== "string")) { throw new Error("Input ARN object is invalid"); } return `arn:${partition}:${service}:${region}:${accountId}:${resource}`; }; function formatUrl(request) { const { port, query } = request; let { protocol, path, hostname } = request; if (protocol && protocol.slice(-1) !== ":") { protocol += ":"; } if (port) { hostname += `:${port}`; } if (path && path.charAt(0) !== "/") { path = `/${path}`; } let queryString = query ? protocols.buildQueryString(query) : ""; if (queryString && queryString[0] !== "?") { queryString = `?${queryString}`; } let auth = ""; if (request.username != null || request.password != null) { const username = request.username ?? ""; const password = request.password ?? ""; auth = `${username}:${password}@`; } let fragment = ""; if (request.fragment) { fragment = `#${request.fragment}`; } return `${protocol}//${auth}${hostname}${path}${queryString}${fragment}`; } exports.build = build; exports.formatUrl = formatUrl; exports.parse = parse; exports.validate = validate;