Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /usr/local/lib/node_modules/homebridge-config-ui-x/node_modules/encoding-negotiator/ drwxr-xr-x | |
| Viewing file: Select action/file-type: 'use strict'
function negotiate (header, supportedEncodings) {
if (!header) {
return undefined
}
const supportedEncodingMap = createMap(supportedEncodings)
const acceptedEncodings = parse(header)
.sort((a, b) => comparator(a, b, supportedEncodingMap))
.filter(isNonZeroQuality)
return determinePreffered(acceptedEncodings, supportedEncodingMap)
}
function determinePreffered (acceptedEncodings, supportedEncodings) {
for (const encoding of acceptedEncodings) {
const selected = supportedEncodings[encoding.name]
if (selected) {
return selected.encoding
}
}
return null
}
function createMap (supported) {
const supportedEncodings = {}
let priority = 0
if (supported.length > 0) {
supportedEncodings['*'] = { encoding: supported[0], priority }
priority++
}
for (const encoding of supported) {
supportedEncodings[encoding] = { encoding, priority }
priority++
}
return supportedEncodings
}
function parse (header) {
const split = header.split(',')
return split.map(parseEncoding)
}
function isNonZeroQuality (encoding) {
return encoding.quality !== 0
}
function parseEncoding (encoding) {
const [name, second] = encoding.trim().split(';')
const quality = getQuality(second)
return {
name,
quality
}
}
function getQuality (second) {
if (!second) {
return 1
}
const [, quality] = second.trim().split('=')
return parseFloat(quality)
}
function comparator (a, b, supportedEncodingMap) {
if (a.quality === b.quality) {
if (supportedEncodingMap[a.name] &&
supportedEncodingMap[b.name] &&
supportedEncodingMap[a.name].priority < supportedEncodingMap[b.name].priority) {
return -1
} else {
return 1
}
}
return b.quality - a.quality
}
module.exports = {
negotiate
}
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0081 ]-- |