diff --git a/packages/gateway-conformance/package.json b/packages/gateway-conformance/package.json index f6dd93a..5196a28 100644 --- a/packages/gateway-conformance/package.json +++ b/packages/gateway-conformance/package.json @@ -62,7 +62,6 @@ "@libp2p/logger": "^5.1.4", "@libp2p/peer-id": "^5.0.8", "@multiformats/dns": "^1.0.6", - "@sgtpooki/file-type": "^1.0.1", "aegir": "^45.0.1", "blockstore-core": "^5.0.2", "datastore-core": "^10.0.2", diff --git a/packages/gateway-conformance/src/fixtures/basic-server.ts b/packages/gateway-conformance/src/fixtures/basic-server.ts index f511f1b..bd0ac45 100644 --- a/packages/gateway-conformance/src/fixtures/basic-server.ts +++ b/packages/gateway-conformance/src/fixtures/basic-server.ts @@ -7,7 +7,6 @@ import { logger } from '@libp2p/logger' import { dns } from '@multiformats/dns' import { MemoryBlockstore } from 'blockstore-core' import { Agent, setGlobalDispatcher } from 'undici' -import { contentTypeParser } from './content-type-parser.js' import { createVerifiedFetch } from './create-verified-fetch.js' import { getLocalDnsResolver } from './get-local-dns-resolver.js' import { convertFetchHeadersToNodeJsHeaders, convertNodeJsHeadersToFetchHeaders } from './header-utils.js' @@ -201,7 +200,6 @@ export async function startVerifiedFetchGateway ({ kuboGateway, serverPort, IPFS const helia = await createHelia({ gateways: [kuboGateway], dnsResolvers: [localDnsResolver], blockstore, datastore }) const verifiedFetch = await createVerifiedFetch(helia, { - contentTypeParser, plugins: [dirIndexHtmlPluginFactory] }) diff --git a/packages/verified-fetch/package.json b/packages/verified-fetch/package.json index 64a16e6..b8dae21 100644 --- a/packages/verified-fetch/package.json +++ b/packages/verified-fetch/package.json @@ -164,6 +164,7 @@ "@libp2p/webrtc": "^5.1.0", "@libp2p/websockets": "^9.1.5", "@multiformats/dns": "^1.0.6", + "@sgtpooki/file-type": "^1.0.1", "cborg": "^4.2.8", "hashlru": "^2.3.0", "helia": "^5.2.1", @@ -188,7 +189,6 @@ "@helia/json": "^4.0.2", "@ipld/car": "^5.4.0", "@libp2p/crypto": "^5.0.11", - "@sgtpooki/file-type": "^1.0.1", "@types/sinon": "^17.0.3", "aegir": "^45.0.9", "blockstore-core": "^5.0.2", diff --git a/packages/verified-fetch/src/plugins/plugin-handle-raw.ts b/packages/verified-fetch/src/plugins/plugin-handle-raw.ts index a43c4bd..c3b7b64 100644 --- a/packages/verified-fetch/src/plugins/plugin-handle-raw.ts +++ b/packages/verified-fetch/src/plugins/plugin-handle-raw.ts @@ -63,7 +63,7 @@ export class RawPlugin extends BasePlugin { context.query.filename = context.query.filename ?? `${cid.toString()}.bin` log.trace('Set content disposition...') } else { - log.trace('Did NOT setting content disposition...') + log.trace('Did NOT set content disposition...') } if (path !== '' && cid.code === rawCode) { diff --git a/packages/gateway-conformance/src/fixtures/content-type-parser.ts b/packages/verified-fetch/src/utils/content-type-parser.ts similarity index 89% rename from packages/gateway-conformance/src/fixtures/content-type-parser.ts rename to packages/verified-fetch/src/utils/content-type-parser.ts index 82d132c..0f55560 100644 --- a/packages/gateway-conformance/src/fixtures/content-type-parser.ts +++ b/packages/verified-fetch/src/utils/content-type-parser.ts @@ -1,10 +1,9 @@ import { logger } from '@libp2p/logger' import { fileTypeFromBuffer } from '@sgtpooki/file-type' -const log = logger('content-type-parser') +const log = logger('helia:verified-fetch:content-type-parser') -// default from verified-fetch is application/octect-stream, which forces a download. This is not what we want for MANY file types. -const defaultMimeType = 'text/html; charset=utf-8' +export const defaultMimeType = 'application/octet-stream' function checkForSvg (bytes: Uint8Array): boolean { log('checking for svg') return /^(<\?xml[^>]+>)?[^<^\w]+ { await stop(verifiedFetch) }) - it('is used when passed to createVerifiedFetch', async () => { - const contentTypeParser = Sinon.stub().resolves('text/plain') + it('can be overriden by passing a custom contentTypeParser', async () => { + let called = false + const contentTypeParser = Sinon.stub().callsFake(() => { + called = true + return 'text/plain' + }) const fetch = await createVerifiedFetch(helia, { contentTypeParser }) expect(fetch).to.be.ok() const resp = await fetch(cid) expect(resp.headers.get('content-type')).to.equal('text/plain') + expect(called).to.equal(true) await fetch.stop() }) - it('sets default content type if contentTypeParser is not passed', async () => { - verifiedFetch = new VerifiedFetch({ - helia - }) - const resp = await verifiedFetch.fetch(cid) - expect(resp.headers.get('content-type')).to.equal('application/octet-stream') - }) - it('sets default content type if contentTypeParser returns undefined', async () => { verifiedFetch = new VerifiedFetch({ helia