|
|
@@ -1,67 +1,57 @@
|
|
|
import fetch from "node-fetch"
|
|
|
import express from "express"
|
|
|
+import bodyParser from "body-parser"
|
|
|
|
|
|
const app = express();
|
|
|
+app.use(bodyParser.json());
|
|
|
|
|
|
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
|
|
|
- });
|
|
|
+const PRICE_MODIFIER = 0.5;
|
|
|
+
|
|
|
+app.post("/price", (req, res) => {
|
|
|
+ if(req.body && req.body.extent){
|
|
|
+ req.body.price = getPrice(req.body.extent);
|
|
|
+ res.send(req.body);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ res.status(400);
|
|
|
+ res.send();
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
app.get("/users/:userId/assets", async (req, res) => {
|
|
|
-
|
|
|
- try{
|
|
|
- let irohaResponse = await fetchUsersAssets(req.params.userId);
|
|
|
+ let irohaResponse = await fetchUsersAssets(req.params.userId);
|
|
|
|
|
|
- res.status(irohaResponse.status);
|
|
|
+ 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);
|
|
|
+ if(irohaResponse.headers.get("content-length") < 1){
|
|
|
+ res.send();
|
|
|
}
|
|
|
+ else{
|
|
|
+ res.send(await irohaResponse.json());
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
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;
|
|
|
- }
|
|
|
+ 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);
|
|
|
}
|
|
|
+
|
|
|
+ res.status(204);
|
|
|
+ res.send();
|
|
|
});
|
|
|
|
|
|
app.post("/buy", (req, res) => {
|
|
|
@@ -69,10 +59,35 @@ app.post("/buy", (req, res) => {
|
|
|
res.status(201);
|
|
|
});
|
|
|
|
|
|
-app.listen(CHAIN4ALL_SERVICE_PORT, () => {
|
|
|
- console.log(`Listening at http://localhost:${CHAIN4ALL_SERVICE_PORT}`)
|
|
|
-});
|
|
|
-
|
|
|
-async function fetchUsersAssets(userId){
|
|
|
+async function fetchUsersAssets(userId){
|
|
|
return await fetch(IROHA_API_HOST + ':' + IROHA_API_PORT + '/accounts/' + userId + '@' + IROHA_DOMAIN + '/assets/');
|
|
|
}
|
|
|
+
|
|
|
+function getArea(extent){
|
|
|
+ let y1 = extent[0][1];
|
|
|
+ let y4 = extent[3][1];
|
|
|
+
|
|
|
+ let x1 = extent[0][0];
|
|
|
+ let x2 = extent[1][0];
|
|
|
+
|
|
|
+ let height = Math.abs(y1 - y4);
|
|
|
+ let width = Math.abs(x1 - x2);
|
|
|
+
|
|
|
+ return height * width;
|
|
|
+}
|
|
|
+
|
|
|
+function getPrice(extent){
|
|
|
+ return getArea(extent) * PRICE_MODIFIER;
|
|
|
+}
|
|
|
+
|
|
|
+function error(err, req, res, next){
|
|
|
+ console.log(err);
|
|
|
+ res.status(500);
|
|
|
+ res.send("Something went wrong. Here is the error message: " + err.message);
|
|
|
+}
|
|
|
+
|
|
|
+app.use(error);
|
|
|
+
|
|
|
+app.listen(CHAIN4ALL_SERVICE_PORT, () => {
|
|
|
+ console.log(`Listening at http://localhost:${CHAIN4ALL_SERVICE_PORT}`)
|
|
|
+});
|