forked from elizaOS/eliza
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi.ts
123 lines (110 loc) · 3.84 KB
/
api.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import express from "express";
import { AgentRuntime } from "@ai16z/eliza";
import { createCollection } from "./handlers/createCollection.ts";
import { createNFT } from "./handlers/createNFT.ts";
import { verifyNFT } from "./handlers/verifyNFT.ts";
export function createNFTApiRouter(agents: Map<string, AgentRuntime>) {
const router = express.Router();
router.post(
"/api/nft-generation/create-collection",
async (req: express.Request, res: express.Response) => {
const agentId = req.body.agentId;
const fee = req.body.fee || 0;
const runtime = agents.get(agentId);
if (!runtime) {
res.status(404).send("Agent not found");
return;
}
try {
const collectionAddressRes = await createCollection({
runtime,
collectionName: runtime.character.name,
fee
});
res.json({
success: true,
data: collectionAddressRes,
});
} catch (e: any) {
console.log(e);
res.json({
success: false,
data: JSON.stringify(e),
});
}
}
);
router.post(
"/api/nft-generation/create-nft",
async (req: express.Request, res: express.Response) => {
const agentId = req.body.agentId;
const collectionName = req.body.collectionName;
const collectionAddress = req.body.collectionAddress;
const collectionAdminPublicKey = req.body.collectionAdminPublicKey;
const collectionFee = req.body.collectionFee;
const tokenId = req.body.tokenId;
const runtime = agents.get(agentId);
if (!runtime) {
res.status(404).send("Agent not found");
return;
}
try {
const nftRes = await createNFT({
runtime,
collectionName,
collectionAddress,
collectionAdminPublicKey,
collectionFee,
tokenId,
});
res.json({
success: true,
data: nftRes,
});
} catch (e: any) {
console.log(e);
res.json({
success: false,
data: JSON.stringify(e),
});
}
}
);
router.post(
"/api/nft-generation/verify-nft",
async (req: express.Request, res: express.Response) => {
const agentId = req.body.agentId;
const collectionAddress = req.body.collectionAddress;
const NFTAddress = req.body.nftAddress;
const token = req.body.token;
const runtime = agents.get(agentId);
if (!runtime) {
res.status(404).send("Agent not found");
return;
}
const verifyToken = runtime.getSetting('SOLANA_VERIFY_TOKEN')
if (token !== verifyToken) {
res.status(401).send(" Access denied for translation");
return;
}
try {
const {success} = await verifyNFT({
runtime,
collectionAddress,
NFTAddress,
});
res.json({
success: true,
data: success ? 'verified' : 'unverified',
});
} catch (e: any) {
console.log(e);
res.json({
success: false,
data: JSON.stringify(e),
});
}
}
);
return router;
}