5const express = require(
'express');
6const cors = require(
'cors');
8const gpuopen_loader = require(
'./JsGPUOpenMaterialLoader');
9const ambientcg_loader = require(
'./JsAmbientCGLoader');
12function initializeServer() {
14 const app = express();
20 app.use(express.static(
'public'));
22 app.get(
'/api/previews', async (req, res) => {
24 const { source } = req.query
25 console.log(
'- Server: Fetch material previews from:', source)
26 if (source ==
'GPUOpen') {
27 const previews = await gpuopen_loader.getPreviews();
31 console.error(
'- Server: Error fetching material previews:', error);
32 res.status(500).json({ error:
'- Server: Failed to fetch material previews' });
37 app.get(
'/api/materials', async (req, res) => {
39 const { source } = req.query
40 console.log(
'- Server: Download materials from:', source)
41 if (source ==
'GPUOpen') {
42 const materials = await gpuopen_loader.getMaterials();
45 else if (source ==
'AmbientCG') {
47 const materials = await ambientcg_loader.downloadMaterialsList();
57 console.error(
'- Server: Error fetching materials:', error);
58 res.status(500).json({ error:
'- Server: Failed to fetch materials' });
63 app.get(
'/api/downloadAmbientCGPackage', async (req, res) => {
65 const { assetId, imageFormat, imageResolution } = req.query;
66 console.log(
'- Server: Download Package: ', assetId, imageFormat, imageResolution);
67 const materialName = await ambientcg_loader.downloadMaterialAsset(assetId, imageFormat, imageResolution);
68 console.log(
'- Server: Downloaded:"', materialName);
70 const result = ambientcg_loader.getDownloadedMaterialInformation();
71 let filename = result.filename;
74 const sanitizeFilename = (filename) => {
75 return filename.replace(/[^a-z0-9_.-]/gi,
'_');
77 const safeFilename = sanitizeFilename(materialName);
80 res.setHeader(
'Content-Type',
'application/zip');
81 res.setHeader(
'Content-Disposition', `attachment; filename=
"${safeFilename}"`);
82 res.setHeader(
'X-File-Title', safeFilename);
85 console.log(
'- Server: Sending data:', safeFilename);
86 res.send(Buffer.from(result.content));
89 console.error(
'Error downloading package:', error);
90 res.status(500).json({ error:
'Failed to download package' });
95 app.get(
'/api/downloadGPUOpenPackage', async (req, res) => {
97 const { listNumber, materialNumber, packageId } = req.query;
99 console.log(
'- Server: Download Package: ', listNumber, materialNumber, packageId)
100 const [data, title] = await gpuopen_loader.downloadPackage(
101 parseInt(listNumber),
102 parseInt(materialNumber),
106 const sanitizeFilename = (filename) => {
107 return filename.replace(/[^a-z0-9_.-]/gi,
'_');
111 console.log(
'- Server: Downloaded:"', title,
'", Data:', data !=
null)
114 const sanitizeFilename = (filename) => {
115 return filename.replace(/[^a-z0-9_.-]/gi,
'_');
117 const safeFilename = sanitizeFilename(title) +
'.zip';
120 res.setHeader(
'Content-Type',
'application/zip');
121 res.setHeader(
'Content-Disposition', `attachment; filename=
"${safeFilename}"`);
122 res.setHeader(
'X-File-Title', safeFilename);
125 res.send(Buffer.from(data));
129 res.status(404).json({ error:
'Package not found' });
132 console.error(
'Error downloading package:', error);
133 res.status(500).json({ error:
'Failed to download package' });
138 const PORT = process.env.PORT || 3000;
139 app.listen(PORT, () => {
140 console.log(`Server is running on http: