import fetch from "node-fetch" import express from "express" const app = express(); const CHAIN4ALL_SERVICE_PORT = process.env.CHAIN4ALL_SERVICE_PORT || 3000; const IROHA_API_HOST = process.env.IROHA_API_HOST || "http://localhost"; const IROHA_API_PORT = process.env.IROHA_API_PORT || 5000; const IROHA_DOMAIN = process.env.IROHA_DOMAIN || "test"; app.post("/price", (req, res) => { //TODO implement price calculation depending on extent area res.send({ price: 33 }); }); app.get("/users/:userId/assets", async (req, res) => { try{ let irohaResponse = await fetchUsersAssets(req.params.userId); res.status(irohaResponse.status); if(irohaResponse.headers.get("content-length") < 1){ res.send(); } else{ res.send(await irohaResponse.json()); } } catch(error){ console.error(error); res.status(500); res.send(error); } }); app.get("/users/:userId/assets/:assetId", async (req, res) => { try{ let assets = (await fetchUsersAssets(req.params.userId)).assets; let parsedAssetName = ""; let i = 0; for(i; i < assets.length; i++){ parsedAssetName = assets[i].assetId.split('#')[0]; if(parsedAssetName === req.params.assetId){ res.status(200); res.send(assets[i]); return; } } res.status(204); res.send(); } catch(error){ console.error(error); res.status(500); res.send(error); } }); app.post("/buy", (req, res) => { //TODO implement... res.status(201); }); app.listen(CHAIN4ALL_SERVICE_PORT, () => { console.log(`Listening at http://localhost:${CHAIN4ALL_SERVICE_PORT}`) }); async function fetchUsersAssets(userId){ return await fetch(IROHA_API_HOST + ':' + IROHA_API_PORT + '/accounts/' + userId + '@' + IROHA_DOMAIN + '/assets/'); }