UNPKG

@helia/verified-fetch

Version:

A fetch-like API for obtaining verified & trustless IPFS content on the web

27 lines 1.62 kB
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