MCPcopy Create free account
hub / github.com/nodejs/node / extractMimeType

Function extractMimeType

deps/undici/src/lib/web/fetch/util.js:1288–1346  ·  view source on GitHub ↗

* @see https://fetch.spec.whatwg.org/#concept-header-extract-mime-type * @param {import('./headers').HeadersList} headers

(headers)

Source from the content-addressed store, hash-verified

1286 * @param {import('./headers').HeadersList} headers
1287 */
1288function extractMimeType (headers) {
1289 // 1. Let charset be null.
1290 let charset = null
1291
1292 // 2. Let essence be null.
1293 let essence = null
1294
1295 // 3. Let mimeType be null.
1296 let mimeType = null
1297
1298 // 4. Let values be the result of getting, decoding, and splitting `Content-Type` from headers.
1299 const values = getDecodeSplit('content-type', headers)
1300
1301 // 5. If values is null, then return failure.
1302 if (values === null) {
1303 return 'failure'
1304 }
1305
1306 // 6. For each value of values:
1307 for (const value of values) {
1308 // 6.1. Let temporaryMimeType be the result of parsing value.
1309 const temporaryMimeType = parseMIMEType(value)
1310
1311 // 6.2. If temporaryMimeType is failure or its essence is "*/*", then continue.
1312 if (temporaryMimeType === 'failure' || temporaryMimeType.essence === '*/*') {
1313 continue
1314 }
1315
1316 // 6.3. Set mimeType to temporaryMimeType.
1317 mimeType = temporaryMimeType
1318
1319 // 6.4. If mimeType’s essence is not essence, then:
1320 if (mimeType.essence !== essence) {
1321 // 6.4.1. Set charset to null.
1322 charset = null
1323
1324 // 6.4.2. If mimeType’s parameters["charset"] exists, then set charset to
1325 // mimeType’s parameters["charset"].
1326 if (mimeType.parameters.has('charset')) {
1327 charset = mimeType.parameters.get('charset')
1328 }
1329
1330 // 6.4.3. Set essence to mimeType’s essence.
1331 essence = mimeType.essence
1332 } else if (!mimeType.parameters.has('charset') && charset !== null) {
1333 // 6.5. Otherwise, if mimeType’s parameters["charset"] does not exist, and
1334 // charset is non-null, set mimeType’s parameters["charset"] to charset.
1335 mimeType.parameters.set('charset', charset)
1336 }
1337 }
1338
1339 // 7. If mimeType is null, then return failure.
1340 if (mimeType == null) {
1341 return 'failure'
1342 }
1343
1344 // 8. Return mimeType.
1345 return mimeType

Callers 2

processResponseEndOfBodyFunction · 0.70
bodyMimeTypeFunction · 0.70

Calls 5

getDecodeSplitFunction · 0.70
parseMIMETypeFunction · 0.70
hasMethod · 0.65
getMethod · 0.65
setMethod · 0.45

Tested by

no test coverage detected