An error occurred while loading the file. Please try again.
-
Athanasios authoredaa9778f1
const fs = require("fs");
const boxIntersect = require("box-intersect");
const path = require('path');
const getIntersectingLayers = (bb, layers) => {
return new Promise((resolve, reject) => {
fs.readFile("./assets/assets.json", (err, data) => {
if (err) {
reject();
}
let assets = JSON.parse(data);
let requestedBB = bb.split(",").map(token => parseFloat(token));
let requestedLayers = layers.split(",");
assets = assets.filter(asset => requestedLayers.includes(asset.id));
assets = assets.filter(asset => asset.scope == "public");
assets = assets.filter(asset => {
let overlaps = boxIntersect([
[...asset.boundingbox],
[...requestedBB]
]);
if (overlaps.length > 0) {
return true;
}
return false;
});
resolve(assets);
});
});
}
const allLayersExist = (layers) => {
if (!layers) return Promise.reject();
return new Promise((resolve, reject) => {
fs.readFile("./assets/assets.json", (err, data) => {
if (err) {
reject();
}
let assets = JSON.parse(data);
layers = layers.split(",");
layers.forEach(layer => {
if (assets.findIndex(asset => asset.id == layer) == -1) {
reject();
}
});
resolve();
});
});
}
const getPublicLayers = () => {
return new Promise((resolve, reject) => {
fs.readFile("./assets/assets.json", (err, data) => {
let assets = JSON.parse(data);
assets = assets.filter(asset => asset.scope == "public");
resolve(assets);
});
});
}
const isPublic = (url) => {
return new Promise((resolve, reject) => {
fs.readFile("./assets/assets.json", (err, data) => {
let assets = JSON.parse(data);
assets = assets.filter(asset => {
let parentDir = path.dirname(asset.url);
return !path.relative(parentDir, url).startsWith("..");
});
if (assets.length == 0) {
resolve(false);
return;
}
if (!assets[0].scope == "public") {
resolve(false);
return;
}
resolve(true);
});
});
}
module.exports = { getIntersectingLayers, allLayersExist, getPublicLayers, isPublic };