@nestjs/platform-express
Version:
Nest - modern, fast, powerful node.js web framework (@platform-express)
27 lines (26 loc) • 1.04 kB
JavaScript
/**
* Returns the version carried by an `Accept` header for media type versioning,
* e.g. `2` for `application/json;v=2` with the `v=` key.
*
* The version parameter may follow other parameters and may belong to any
* media range of a list (`text/html, application/json;v=2`); the first match
* wins. Returns `undefined` when no parameter starts with the key.
*
* Duplicated in each platform package so that a platform package never
* depends on a newer `@nestjs/core` than the one installed.
*/
export function getMediaTypeVersion(acceptHeader, key) {
const mediaRanges = []
.concat(acceptHeader ?? [])
.flatMap(value => value.split(','));
for (const mediaRange of mediaRanges) {
const [, ...parameters] = mediaRange.split(';');
for (const parameter of parameters) {
const trimmedParameter = parameter.trim();
if (trimmedParameter.startsWith(key)) {
return trimmedParameter.slice(key.length);
}
}
}
return undefined;
}