From aade0e534dd5cb6aab71cbc5118e668426553869 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Sun, 9 Nov 2025 12:26:53 +0100 Subject: [PATCH] support multiple data sets in `x-data-set-id` header --- index.js | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/index.js b/index.js index c0c84e0..3522b07 100644 --- a/index.js +++ b/index.js @@ -194,19 +194,26 @@ async function testRetrieval({ return } - const dataSetIdHeaderValue = res.headers.get('x-data-set-id') - const resolvedAs = await describeResolvedDataSet({ - pdpVerifier, - fwssStateView, - serviceProviderRegistry, - dataSetIdHeaderValue, - }) + const dataSetIdHeaderValue = res.headers.get('x-data-set-id') || '' + const resolvedAs = await Promise.all( + dataSetIdHeaderValue + .split(',') + .filter(Boolean) + .map((dataSetId) => + describeResolvedDataSet({ + pdpVerifier, + fwssStateView, + serviceProviderRegistry, + dataSetIdString: dataSetId, + }), + ), + ) console.error( 'ALERT Cannot retrieve data set %s piece %s (resolved as %s) from %s via %s: %s %s', String(dataSetId), String(pieceId), - resolvedAs, + resolvedAs.length > 0 ? resolvedAs.join(', ') : '', botLocation ?? '', url, res.status, @@ -226,24 +233,20 @@ async function testRetrieval({ * @param {PdpVerifier} args.pdpVerifier * @param {FilecoinWarmStorageServiceStateView} args.fwssStateView * @param {ServiceProviderRegistry} args.serviceProviderRegistry - * @param {string | null} args.dataSetIdHeaderValue + * @param {string} args.dataSetIdString * @returns {Promise} Description of the provider */ async function describeResolvedDataSet({ pdpVerifier, fwssStateView, serviceProviderRegistry, - dataSetIdHeaderValue, + dataSetIdString, }) { - if (dataSetIdHeaderValue === null || dataSetIdHeaderValue === '') { - return `` - } - let dataSetId try { - dataSetId = BigInt(dataSetIdHeaderValue) + dataSetId = BigInt(dataSetIdString) } catch (err) { - return `` + return `` } try { @@ -274,7 +277,7 @@ async function describeResolvedDataSet({ ).toString() return [ - `dataSetId=${dataSetIdHeaderValue}`, + `dataSetId=${dataSetIdString}`, 'from', isApprovedProvider ? 'approved' : 'unapproved', isActive ? 'active' : 'inactive',