UNPKG

@web3-storage/w3up-client

Version:

Client for the web3.storage w3up api

59 lines 2.16 kB
import { createServer } from 'http'; import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { parseLink } from '@ucanto/server'; import * as Signer from '@ucanto/principal/ed25519'; import { Receipt, Message } from '@ucanto/core'; import * as CAR from '@ucanto/transport/car'; import { Assert } from '@web3-storage/content-claims/capability'; import { randomCAR } from './random.js'; const port = process.env.PORT ?? 9201; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const fixtureName = process.env.FIXTURE_NAME || 'workflow.car'; const fixtureContent = fs.readFileSync(path.resolve(`${__dirname}`, '..', 'fixtures', fixtureName)); const server = createServer(async (req, res) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', '*'); res.setHeader('Access-Control-Allow-Headers', '*'); const taskCid = req.url?.split('/')[1] ?? ''; if (taskCid === 'bafyreibo6nqtvp67daj7dkmeb5c2n6bg5bunxdmxq3lghtp3pmjtzpzfma') { res.writeHead(200, { 'Content-disposition': 'attachment; filename=' + fixtureName, }); return res.end(fixtureContent); } const issuer = await Signer.generate(); const content = (await randomCAR(128)).cid; const locationClaim = await Assert.location.delegate({ issuer, audience: issuer, with: issuer.toDIDKey(), nb: { content, location: ['http://localhost'], }, expiration: Infinity, }); const receipt = await Receipt.issue({ issuer, fx: { fork: [locationClaim], }, ran: parseLink(taskCid), result: { ok: { site: locationClaim.link(), }, }, }); const message = await Message.build({ receipts: [receipt], }); const request = CAR.request.encode(message); res.writeHead(200); res.end(request.body); }); server.listen(port, () => console.log(`Listening on :${port}`)); process.on('SIGTERM', () => process.exit(0)); //# sourceMappingURL=receipts-server.js.map