Compare commits

..

3 Commits

Author SHA1 Message Date
71fa04272c Added installers configs 2026-02-11 01:13:34 +01:00
7e9496b35d Added a try catch block to deblock api requests 2026-02-11 01:05:22 +01:00
5eaca1e948 Refactored productsFilesService to productsService 2026-02-11 01:02:33 +01:00
8 changed files with 47 additions and 18 deletions

View File

@@ -3,8 +3,12 @@ const metaService = require("../services/metaService")
const router = express.Router({ mergeParams: true }) const router = express.Router({ mergeParams: true })
router.get(/.*/, async (req, res, next) => { router.get(/.*/, async (req, res, next) => {
try {
const file = metaService.serveStaticFile(req.originalUrl) const file = metaService.serveStaticFile(req.originalUrl)
return res.status(200).sendFile(file) return res.status(200).sendFile(file)
} catch (error) {
next()
}
}) })
module.exports = router module.exports = router

View File

@@ -0,0 +1,12 @@
const express = require("express")
const productsService = require("../../../../services/productsService")
const router = express.Router({ mergeParams: true })
router.get("/", async (req, res) => {
const { productName, productPlatform } = req.params
await productsService.canAccess(productName)
const configs = await productsService.getInstallerConfig(productName, productPlatform)
return res.status(200).json(configs)
})
module.exports = router

View File

@@ -1,11 +1,11 @@
const express = require("express") const express = require("express")
const productsFileService = require("../../../../services/productsFileService") const productsService = require("../../../../services/productsService")
const router = express.Router({ mergeParams: true }) const router = express.Router({ mergeParams: true })
router.get(/.*/, async (req, res, next) => { router.get(/.*/, async (req, res, next) => {
const { productName, productPlatform } = req.params const { productName, productPlatform } = req.params
await productsFileService.canAccess(productName) await productsService.canAccess(productName)
const file = await productsFileService.getFile(req.url, productName, productPlatform) const file = await productsService.getFile(req.url, productName, productPlatform)
return res.status(200).download(file.path) return res.status(200).download(file.path)
}) })

View File

@@ -1,11 +1,11 @@
const express = require("express") const express = require("express")
const productsFileService = require("../../../../services/productsFileService") const productsService = require("../../../../services/productsService")
const router = express.Router({ mergeParams: true }) const router = express.Router({ mergeParams: true })
router.get("/", async (req, res) => { router.get("/", async (req, res) => {
const { productName, productPlatform } = req.params const { productName, productPlatform } = req.params
await productsFileService.canAccess(productName) await productsService.canAccess(productName)
const files = await productsFileService.getProductFiles(productName, productPlatform) const files = await productsService.getProductFiles(productName, productPlatform)
return res.status(200).json(files) return res.status(200).json(files)
}) })

View File

@@ -1,12 +1,12 @@
const express = require("express") const express = require("express")
const productsFileService = require("../../../../services/productsFileService") const productsService = require("../../../../services/productsService")
const router = express.Router({ mergeParams: true }) const router = express.Router({ mergeParams: true })
router.get("/", async (req, res) => { router.get("/", async (req, res) => {
const { productName, productPlatform } = req.params const { productName, productPlatform } = req.params
await productsFileService.canAccess(productName) await productsService.canAccess(productName)
const files = await productsFileService.getRequirementsForPlatform(productName, productPlatform) const requirements = await productsService.getRequirementsForPlatform(productName, productPlatform)
return res.status(200).json(files) return res.status(200).json(requirements)
}) })
module.exports = router module.exports = router

View File

@@ -1,11 +1,11 @@
const express = require("express") const express = require("express")
const productsFileService = require("../../../services/productsFileService") const productsService = require("../../../services/productsService")
const router = express.Router({ mergeParams: true }) const router = express.Router({ mergeParams: true })
router.get("/", async (req, res) => { router.get("/", async (req, res) => {
const { productName } = req.params const { productName } = req.params
await productsFileService.canAccess(productName) await productsService.canAccess(productName)
const files = await productsFileService.getInstallerResources(productName) const files = await productsService.getInstallerResources(productName)
return res.status(200).json(files) return res.status(200).json(files)
}) })

View File

@@ -1,14 +1,14 @@
const express = require("express") const express = require("express")
const router = express.Router({ mergeParams: false }) const router = express.Router({ mergeParams: false })
const productsFileService = require("../../services/productsFileService") const productsService = require("../../services/productsService")
router.get("/", async (req, res) => { router.get("/", async (req, res) => {
const products = await productsFileService.getProducts() const products = await productsService.getProducts()
return res.status(200).json(products) return res.status(200).json(products)
}) })
router.get("/product/:productName", async (req, res) => { router.get("/product/:productName", async (req, res) => {
const product = await productsFileService.getProduct(req.params.productName) const product = await productsService.getProduct(req.params.productName)
return res.status(200).json(product) return res.status(200).json(product)
}) })

View File

@@ -144,6 +144,18 @@ async function getInstallerResources(productName) {
return config["installerResources"] return config["installerResources"]
} }
async function getInstallerConfig(productName, productPlatform) {
const fixedPath = path.join(productsDataPath, productName, "files", ".brikcfg")
if (!(await fs.promises.exists(fixedPath))) return []
const config = JSON.parse(await fs.promises.readFile(fixedPath, "utf8"))
const globalReqs = config.configurations?.global || []
const platformReqs = config.configurations?.[productPlatform] || []
return { ...globalReqs, ...platformReqs }
}
module.exports = { module.exports = {
getFile, getFile,
canAccess, canAccess,
@@ -151,6 +163,7 @@ module.exports = {
getFileSha1, getFileSha1,
getProducts, getProducts,
getProductFiles, getProductFiles,
getInstallerConfig,
getInstallerResources, getInstallerResources,
getRequirementsForPlatform getRequirementsForPlatform
} }