app.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import fetch from "node-fetch"
  2. import express from "express"
  3. const app = express();
  4. const CHAIN4ALL_SERVICE_PORT = process.env.CHAIN4ALL_SERVICE_PORT || 3000;
  5. const IROHA_API_HOST = process.env.IROHA_API_HOST || "http://localhost";
  6. const IROHA_API_PORT = process.env.IROHA_API_PORT || 5000;
  7. const IROHA_DOMAIN = process.env.IROHA_DOMAIN || "test";
  8. app.post("/price", (req, res) => {
  9. //TODO implement price calculation depending on extent area
  10. res.send({
  11. price: 33
  12. });
  13. });
  14. app.get("/users/:userId/assets", async (req, res) => {
  15. try{
  16. let irohaResponse = await fetchUsersAssets(req.params.userId);
  17. res.status(irohaResponse.status);
  18. if(irohaResponse.headers.get("content-length") < 1){
  19. res.send();
  20. }
  21. else{
  22. res.send(await irohaResponse.json());
  23. }
  24. }
  25. catch(error){
  26. console.error(error);
  27. res.status(500);
  28. res.send(error);
  29. }
  30. });
  31. app.get("/users/:userId/assets/:assetId", async (req, res) => {
  32. try{
  33. let assets = (await fetchUsersAssets(req.params.userId)).assets;
  34. let parsedAssetName = "";
  35. let i = 0;
  36. for(i; i < assets.length; i++){
  37. parsedAssetName = assets[i].assetId.split('#')[0];
  38. if(parsedAssetName === req.params.assetId){
  39. res.status(200);
  40. res.send(assets[i]);
  41. return;
  42. }
  43. }
  44. res.status(204);
  45. res.send();
  46. }
  47. catch(error){
  48. console.error(error);
  49. res.status(500);
  50. res.send(error);
  51. }
  52. });
  53. app.post("/buy", (req, res) => {
  54. //TODO implement...
  55. res.status(201);
  56. });
  57. app.listen(CHAIN4ALL_SERVICE_PORT, () => {
  58. console.log(`Listening at http://localhost:${CHAIN4ALL_SERVICE_PORT}`)
  59. });
  60. async function fetchUsersAssets(userId){
  61. return await fetch(IROHA_API_HOST + ':' + IROHA_API_PORT + '/accounts/' + userId + '@' + IROHA_DOMAIN + '/assets/');
  62. }