diff --git a/packages/block-brokers/src/trustless-gateway/broker.ts b/packages/block-brokers/src/trustless-gateway/broker.ts index aa4d04161..9abbb75cc 100644 --- a/packages/block-brokers/src/trustless-gateway/broker.ts +++ b/packages/block-brokers/src/trustless-gateway/broker.ts @@ -10,7 +10,7 @@ import type { CID } from 'multiformats/cid' export interface CreateTrustlessGatewaySessionOptions extends CreateSessionOptions { /** * By default we will only connect to peers with HTTPS addresses, pass true - * to also connect to HTTP addresses. + * to also connect to HTTP addresses. * * @default false */ @@ -57,7 +57,7 @@ export class TrustlessGatewayBlockBroker implements BlockBroker { + async getRawBlock (cid: CID, { signal, maxSize = DEFAULT_MAX_SIZE, provider }: GetRawBlockOptions = {}): Promise { const gwUrl = new URL(this.url.toString()) gwUrl.pathname = `/ipfs/${cid.toString()}` - // necessary as not every gateway supports dag-cbor, but every should support - // sending raw block as-is - gwUrl.search = '?format=raw' + const params = new URLSearchParams( {format: 'raw'}) + if (provider != null) { + params.set('provider', provider) + } + gwUrl.search = params.toString() + + if (signal?.aborted === true) { throw new Error(`Signal to fetch raw block for CID ${cid} from gateway ${this.url} was aborted prior to fetch`) diff --git a/packages/interface/src/blocks.ts b/packages/interface/src/blocks.ts index 1219b5220..4d0c41f2b 100644 --- a/packages/interface/src/blocks.ts +++ b/packages/interface/src/blocks.ts @@ -119,6 +119,7 @@ export interface BlockRetrievalOptions = ProgressEvent> extends AbortOptions, ProgressOptions {