const main = require("../contracts/main"); const { Address, Cell, Slice } = require("ton"); const { Base64 } = require("@tonconnect/protocol"); require("dotenv").config(); const express = require("express"); const { get_tonclient, AdnlAddress } = require("../contracts/utils"); const { getRecords } = require("../contracts/main"); const { sha256 } = require("ton-crypto"); const { BN } = require("bn.js"); const app = express(); const port = 5171; const debug = process.env.DEBUG === "1"; let tonclient = get_tonclient(debug); app.use(function (err, req, res, next) { if (!err) return next(); // you also need this line console.log("error"); res.send("error"); }); app.get("/", async (req, res) => { res.send("Agorata microservice for dealing with TON"); }); app.get("/buy-message/:collection/:domain" /* the rest as get parameters: buyer, key */, (req, res) => { try { let collection = Address.parse(req.params.collection); if (req.query.buyer !== "") { let buyer = Address.parse(req.query.buyer); let key = Buffer.from(req.query.key, "hex"); let signature = main.signBuy(req.params.domain, collection, buyer, key); let msg = main.createItem({ domain: req.params.domain, signature }); res.send(JSON.stringify([Base64.encode(msg.toBoc()), collection.toString()])); } else { let msg = main.createItem({ domain: req.params.domain, signature: "0" }); res.send(JSON.stringify([Base64.encode(msg.toBoc()), collection.toString()])); } } catch (e) { console.error("buy-message", e); } }); app.get("/content-message/:address/:zone/:domain", async (req, res) => { try { let msg = await main.setContent({ domain: req.params.domain, zone: req.params.zone }); let addr = main.getItemAddr(Address.parse(req.params.address), req.params.domain, 0); res.send(JSON.stringify([Base64.encode(msg.toBoc()), addr.toString()])); } catch (e) { console.error("content-message"); } }); app.get("/address/:collection/:domain", (req, res) => { let addr = main.getItemAddr(Address.parse(req.params.collection), req.params.domain, 0); res.send(JSON.stringify({ address: addr.toString() })); }); app.get("/get-records/:address", async (req, res) => { try { let records = await getRecords(tonclient, Address.parse(req.params.address)); // console.log(records) res.send(JSON.stringify(records)); } catch (e) { console.log(e); res.send(JSON.stringify({})); } }); app.get("/get-price/:address/:subdomain", async (req, res) => { let price = await main.getPrice(tonclient, Address.parse(req.params.address), req.params.subdomain); res.send(JSON.stringify(price)); }); app.get("/set-record/site/:site", async (req, res) => { let site = new AdnlAddress(req.params.site); let msg = await main.changeRecordMsg("site", await main.AdnlRecord(site)); res.send(JSON.stringify(Base64.encode(msg.toBoc()))); }); app.get("/hash/:key", async (req, res) => { res.send(new BN(await sha256(req.params.key)).toString()); }); app.get("/set-record/wallet/:wallet", async (req, res) => { let wallet = Address.parse(req.params.wallet); let msg = await main.changeRecordMsg("wallet", await main.WalletRecord(wallet)); res.send(JSON.stringify(Base64.encode(msg.toBoc()))); }); app.listen(port, () => { console.log(`Example app listening on port ${port}`); });