Skip to content

Commit 809ff96

Browse files
authored
feat: use HTTP principal resolver (#564)
Uses the new principal resolvers. Attempts to resolve from configured principal mapping and if not found, resolves over HTTP for all `storacha.network` domains.
1 parent 7f7b4d8 commit 809ff96

File tree

4 files changed

+38
-16
lines changed

4 files changed

+38
-16
lines changed

pnpm-lock.yaml

Lines changed: 24 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ catalog:
4040
"@storacha/capabilities": ^1.12.0
4141
"@storacha/client": ^1.8.17
4242
"@storacha/did-mailto": ^1.0.2
43-
"@storacha/filecoin-api": ^1.2.0
43+
"@storacha/filecoin-api": ^1.3.4
4444
"@storacha/filecoin-client": ^1.0.15
4545
"@storacha/indexing-service-client": ^2.6.9
4646
"@storacha/one-webcrypto": ^1.0.1
47+
"@storacha/principal-resolver": ^1.0.0
4748
"@storacha/router": ^1.1.1
4849
"@storacha/upload-api": ^2.8.0-rc.0
4950
"@storacha/upload-client": ^1.3.6

upload-api/functions/ucan-invocation-router.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Config } from 'sst/node/config'
2-
import { API, error, ok } from '@ucanto/core'
2+
import { API } from '@ucanto/core'
33
import * as Delegation from '@ucanto/core/delegation'
44
import { CAR, Legacy, Codec } from '@ucanto/transport'
5-
import { DIDResolutionError, Schema } from '@ucanto/validator'
5+
import { Schema } from '@ucanto/validator'
66
import * as Link from 'multiformats/link'
77
import { base64 } from 'multiformats/bases/base64'
88
import * as Sentry from '@sentry/serverless'
@@ -12,6 +12,7 @@ import * as Proof from '@storacha/client/proof'
1212
import { Client as IndexingServiceClient } from '@storacha/indexing-service-client'
1313
import * as UploadAPI from '@storacha/upload-api'
1414
import * as UCANCaps from '@storacha/capabilities/ucan'
15+
import { HTTPResolver, CacheResolver, MapResolver, TieredResolver } from '@storacha/principal-resolver'
1516
import {
1617
composeCarStoresWithOrderedHas,
1718
createCarStore,
@@ -514,6 +515,13 @@ export async function ucanInvocationRouter(request) {
514515
}
515516
}
516517

518+
const principalResolver = TieredResolver.create([
519+
MapResolver.create(principalMapping),
520+
CacheResolver.create(
521+
HTTPResolver.create([/^did:web:.*\.storacha\.network$/])
522+
),
523+
])
524+
517525
const server = createUcantoServer(serviceSigner, {
518526
codec,
519527
// @ts-expect-error needs update of upload-api
@@ -523,10 +531,7 @@ export async function ucanInvocationRouter(request) {
523531
registry: allocationBlobRegistry,
524532
blobsStorage,
525533
blobRetriever,
526-
resolveDIDKey: (did) =>
527-
Schema.did({ method: 'web' }).is(did) && principalMapping[did]
528-
? ok([principalMapping[did]])
529-
: error(new DIDResolutionError(did)),
534+
...principalResolver,
530535
getServiceConnection: () => connection,
531536
// TODO: to be deprecated with `store/*` protocol
532537
storeTable: createStoreTable(AWS_REGION, storeTableName, {

upload-api/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"@storacha/did-mailto": "catalog:",
2525
"@storacha/indexing-service-client": "catalog:",
2626
"@storacha/one-webcrypto": "catalog:",
27+
"@storacha/principal-resolver": "catalog:",
2728
"@storacha/router": "catalog:",
2829
"@storacha/upload-api": "catalog:",
2930
"@ucanto/client": "catalog:",

0 commit comments

Comments
 (0)