Skip to content

Commit df749ef

Browse files
committed
feat: resolve did:plc
1 parent 3016cc2 commit df749ef

File tree

3 files changed

+81
-21
lines changed

3 files changed

+81
-21
lines changed

pnpm-lock.yaml

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

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

Lines changed: 13 additions & 14 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'
@@ -11,6 +11,7 @@ import Stripe from 'stripe'
1111
import { Client as IndexingServiceClient } from '@storacha/indexing-service-client'
1212
import * as UploadAPI from '@storacha/upload-api'
1313
import * as UCANCaps from '@storacha/capabilities/ucan'
14+
import { createDidResolver } from '../did-resolver.js'
1415
import { composeCarStoresWithOrderedHas, createCarStore } from '../buckets/car-store.js'
1516
import { createStoreTable } from '../tables/store.js'
1617
import { createUploadTable } from '../tables/upload.js'
@@ -48,6 +49,7 @@ import { mustGetEnv } from '../../lib/env.js'
4849
import { createEgressTrafficQueue } from '../../billing/queues/egress-traffic.js'
4950
import { create as createRoutingService } from '../external-services/router.js'
5051
import { create as createBlobRetriever } from '../external-services/blob-retriever.js'
52+
import { PlcClient } from '@storacha/did-plc'
5153

5254
Sentry.AWSLambda.init({
5355
environment: process.env.SST_STAGE,
@@ -119,15 +121,15 @@ export const knownWebDIDs = {
119121
*/
120122
export async function ucanInvocationRouter(request) {
121123
try {
122-
// Capture X-Client custom header for analytics
123-
const clientId = Object.entries(request.headers)
124+
// Capture X-Client custom header for analytics
125+
const clientId = Object.entries(request.headers)
124126
.find(([key]) => key.toLowerCase() === 'x-client')?.[1] ?? 'Storacha/?'
125-
console.log(JSON.stringify({
126-
message: 'Client request',
127-
clientId,
128-
requestId: request.requestContext?.requestId || 'unknown',
129-
timestamp: new Date().toISOString()
130-
}))
127+
console.log(JSON.stringify({
128+
message: 'Client request',
129+
clientId,
130+
requestId: request.requestContext?.requestId || 'unknown',
131+
timestamp: new Date().toISOString()
132+
}))
131133
} catch (error) {
132134
console.error(error)
133135
}
@@ -309,10 +311,7 @@ export async function ucanInvocationRouter(request) {
309311
registry: allocationBlobRegistry,
310312
blobsStorage,
311313
blobRetriever,
312-
resolveDIDKey: (did) =>
313-
Schema.did({ method: 'web' }).is(did) && principalMapping[did]
314-
? ok(principalMapping[did])
315-
: error(new DIDResolutionError(did)),
314+
resolveDIDKey: createDidResolver(principalMapping, new PlcClient()),
316315
getServiceConnection: () => connection,
317316
// TODO: to be deprecated with `store/*` protocol
318317
storeTable: createStoreTable(AWS_REGION, storeTableName, {

upload-api/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"@storacha/access": "catalog:",
2323
"@storacha/capabilities": "catalog:",
2424
"@storacha/did-mailto": "catalog:",
25+
"@storacha/did-plc": "file:../../upload-service/packages/did-plc/storacha-did-plc-0.1.4.tgz",
2526
"@storacha/indexing-service-client": "catalog:",
2627
"@storacha/one-webcrypto": "catalog:",
2728
"@storacha/upload-api": "catalog:",

0 commit comments

Comments
 (0)