Spaces:
Sleeping
Sleeping
commit
Browse files- src/mods/mods.ts +36 -34
src/mods/mods.ts
CHANGED
|
@@ -11,7 +11,7 @@ export class ModManager {
|
|
| 11 |
private bucketId = "buckets/NSMP/NSMP-Server-Storage";
|
| 12 |
private bucketFolder = "";
|
| 13 |
|
| 14 |
-
constructor(server: Server) {
|
| 15 |
this.server = server;
|
| 16 |
}
|
| 17 |
|
|
@@ -22,38 +22,37 @@ export class ModManager {
|
|
| 22 |
res.send(JSON.stringify(mods));
|
| 23 |
});
|
| 24 |
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
return;
|
| 41 |
-
}
|
| 42 |
-
|
| 43 |
-
const buffer = Buffer.from(await blob.arrayBuffer());
|
| 44 |
-
|
| 45 |
-
res.setHeader(
|
| 46 |
-
"Content-Disposition",
|
| 47 |
-
`attachment; filename="${filename}"`
|
| 48 |
-
);
|
| 49 |
-
res.setHeader("Content-Type", "application/java-archive");
|
| 50 |
-
res.send(buffer);
|
| 51 |
-
} catch (err) {
|
| 52 |
-
res.status(500).send("Failed to fetch mod from bucket");
|
| 53 |
}
|
| 54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
}
|
| 56 |
-
}
|
| 57 |
}
|
| 58 |
|
| 59 |
private async getModList(): Promise<Mod[]> {
|
|
@@ -83,17 +82,20 @@ export class ModManager {
|
|
| 83 |
|
| 84 |
const jarBuffer = Buffer.from(await jarBlob.arrayBuffer());
|
| 85 |
const metadataContent = Buffer.from(await metadataBlob.arrayBuffer()).toString("utf-8");
|
|
|
|
| 86 |
const metadata = JSON.parse(metadataContent) as ModMetadata;
|
| 87 |
const hash = sha256(jarBuffer);
|
| 88 |
|
|
|
|
|
|
|
| 89 |
mods.push({
|
| 90 |
name: metadata.name,
|
| 91 |
-
filename
|
| 92 |
sha256: hash,
|
| 93 |
-
url: `https://NSMP-NSMP-Server.hf.space/files/mods/${
|
| 94 |
});
|
| 95 |
}
|
| 96 |
|
| 97 |
return mods;
|
| 98 |
}
|
| 99 |
-
}
|
|
|
|
| 11 |
private bucketId = "buckets/NSMP/NSMP-Server-Storage";
|
| 12 |
private bucketFolder = "";
|
| 13 |
|
| 14 |
+
constructor(server: Server) {
|
| 15 |
this.server = server;
|
| 16 |
}
|
| 17 |
|
|
|
|
| 22 |
res.send(JSON.stringify(mods));
|
| 23 |
});
|
| 24 |
|
| 25 |
+
this.server.get("/files/mods/:filename(*)", async (req, res) => {
|
| 26 |
+
try {
|
| 27 |
+
const filename = req.params.filename;
|
| 28 |
+
|
| 29 |
+
const remotePath = `${this.bucketFolder}/${filename}`;
|
| 30 |
+
|
| 31 |
+
const blob = await downloadFile({
|
| 32 |
+
repo: this.bucketId,
|
| 33 |
+
path: remotePath,
|
| 34 |
+
accessToken: process.env.HF_TOKEN
|
| 35 |
+
});
|
| 36 |
+
|
| 37 |
+
if (!blob) {
|
| 38 |
+
res.status(404).send("Mod not found");
|
| 39 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
}
|
| 41 |
+
|
| 42 |
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
| 43 |
+
|
| 44 |
+
res.setHeader(
|
| 45 |
+
"Content-Disposition",
|
| 46 |
+
`attachment; filename="${filename}"`
|
| 47 |
+
);
|
| 48 |
+
res.setHeader("Content-Type", "application/java-archive");
|
| 49 |
+
|
| 50 |
+
res.send(buffer);
|
| 51 |
+
} catch (err) {
|
| 52 |
+
console.error(err);
|
| 53 |
+
res.status(500).send("Failed to fetch mod from bucket");
|
| 54 |
}
|
| 55 |
+
});
|
| 56 |
}
|
| 57 |
|
| 58 |
private async getModList(): Promise<Mod[]> {
|
|
|
|
| 82 |
|
| 83 |
const jarBuffer = Buffer.from(await jarBlob.arrayBuffer());
|
| 84 |
const metadataContent = Buffer.from(await metadataBlob.arrayBuffer()).toString("utf-8");
|
| 85 |
+
|
| 86 |
const metadata = JSON.parse(metadataContent) as ModMetadata;
|
| 87 |
const hash = sha256(jarBuffer);
|
| 88 |
|
| 89 |
+
const filename = path.basename(jarPath);
|
| 90 |
+
|
| 91 |
mods.push({
|
| 92 |
name: metadata.name,
|
| 93 |
+
filename,
|
| 94 |
sha256: hash,
|
| 95 |
+
url: `https://NSMP-NSMP-Server.hf.space/files/mods/${encodeURIComponent(filename)}`,
|
| 96 |
});
|
| 97 |
}
|
| 98 |
|
| 99 |
return mods;
|
| 100 |
}
|
| 101 |
+
}
|