@helia/verified-fetch
Version:
A fetch-like API for obtaining verified & trustless IPFS content on the web
27 lines • 1.62 kB
JavaScript
import { isExplicitAcceptHeader, isExplicitFormatQuery, isExplicitIpldAcceptRequest } from './is-accept-explicit.js';
import { queryFormatToAcceptHeader } from './select-output-type.js';
export function getResolvedAcceptHeader({ query, headers, logger }) {
const log = logger.forComponent('helia:verified-fetch:get-resolved-accept-header');
const requestHeaders = new Headers(headers);
const incomingAcceptHeader = requestHeaders.get('accept') ?? undefined;
if (incomingAcceptHeader != null) {
log('incoming accept header "%s"', incomingAcceptHeader);
}
if (!isExplicitIpldAcceptRequest({ query, headers: requestHeaders })) {
log('no explicit IPLD content-type requested, returning incoming accept header %s', incomingAcceptHeader);
return incomingAcceptHeader;
}
const queryFormatMapping = queryFormatToAcceptHeader(query?.format);
if (query?.format != null) {
log('incoming query format "%s", mapped to %s', query.format, queryFormatMapping);
}
let acceptHeader = incomingAcceptHeader;
// if the incomingAcceptHeader is autogenerated by the requesting client (browser/curl/fetch/etc) then we may need to override it if query.format is specified
if (!isExplicitAcceptHeader(requestHeaders) && isExplicitFormatQuery(query)) {
log('accept header not recognized, but query format provided, setting accept header to %s', queryFormatMapping);
acceptHeader = queryFormatMapping;
}
log('resolved accept header to "%s"', acceptHeader);
return acceptHeader;
}
//# sourceMappingURL=get-resolved-accept-header.js.map