UNPKG

cdk-amazon-chime-resources

Version:

![Experimental](https://img.shields.io/badge/experimental-important.svg?style=for-the-badge)

28 lines (27 loc) 922 B
import { escapeUri } from "@aws-sdk/util-uri-escape"; import { SIGNATURE_HEADER } from "./constants"; export const getCanonicalQuery = ({ query = {} }) => { const keys = []; const serialized = {}; for (const key of Object.keys(query).sort()) { if (key.toLowerCase() === SIGNATURE_HEADER) { continue; } keys.push(key); const value = query[key]; if (typeof value === "string") { serialized[key] = `${escapeUri(key)}=${escapeUri(value)}`; } else if (Array.isArray(value)) { serialized[key] = value .slice(0) .sort() .reduce((encoded, value) => encoded.concat([`${escapeUri(key)}=${escapeUri(value)}`]), []) .join("&"); } } return keys .map((key) => serialized[key]) .filter((serialized) => serialized) .join("&"); };