From d92acf165403f7707251b3ae6d8d0fbb9bb76aba Mon Sep 17 00:00:00 2001 From: pacmano1 <44065187+pacmano1@users.noreply.github.com> Date: Sat, 22 Jun 2024 09:47:58 -0600 Subject: [PATCH] Create select_named_headers_from_sourceMap.js --- select_named_headers_from_sourceMap.js | 41 ++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 select_named_headers_from_sourceMap.js diff --git a/select_named_headers_from_sourceMap.js b/select_named_headers_from_sourceMap.js new file mode 100644 index 0000000..3934735 --- /dev/null +++ b/select_named_headers_from_sourceMap.js @@ -0,0 +1,41 @@ +/** + * Creates a LinkedHashMap from provided headers and header keys. + * This function is based on original work by Tony Germano (@agermano) from Mirth Slack. + * + * @param {Object} headers - The headers object containing header lists. + * @param {Array} headerKeys - An array of header keys to be included in the map. + * @param {boolean} excludeNullValues - Flag to determine whether to exclude null values. + * @returns {java.util.LinkedHashMap} - A LinkedHashMap with header keys and their corresponding last values. + */ +function createHeaderMap(headers, headerKeys, excludeNullValues) { + // Initialize a new LinkedHashMap + const headerMap = new java.util.LinkedHashMap(); + + // Function to get the last value of a header key + const keyToEntryWithLastValue = key => { + const headerList = headers.getHeaderList(key); + const value = headerList && headerList.get(headerList.size() - 1); + return [key, value]; + } + + // Populate the headerMap based on the excludeNullValues flag + if (excludeNullValues == true) { + headerKeys.map(keyToEntryWithLastValue) + .filter(entry => entry[1] != null) + .forEach(entry => headerMap.put.apply(headerMap, entry)); + } else { + headerKeys.map(keyToEntryWithLastValue) + .forEach(entry => headerMap.put.apply(headerMap, entry)); + } + + // Return the populated LinkedHashMap + return headerMap; +} + +// Example usage: +const headers = $s('headers'); +const headerKeys = ["host", "content-type", "date", "Authorization", "content-md5", "Accept"]; +const headerMap = createHeaderMap(headers, headerKeys, false); +$co('headerMap',headerMap) +// In your sender, selct "Use Map" and type in "headerMap" (no double quotes, just the word) +