@web3-storage/w3up-client
Version:
Client for the web3.storage w3up api
59 lines • 2.16 kB
JavaScript
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