fix: fix paths
This commit is contained in:
@@ -6,7 +6,6 @@ import fsp from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
// @ts-ignore
|
||||
import TrackerServer from 'bittorrent-tracker/server';
|
||||
import createTorrent from 'create-torrent';
|
||||
import WebTorrent, { type Torrent } from 'webtorrent';
|
||||
|
||||
// Configuration
|
||||
@@ -17,7 +16,7 @@ const STATIC_API_PATH = '/api/static';
|
||||
const LOCAL_IP = '127.0.0.1';
|
||||
const WORKSPACE_PATH = 'workspace';
|
||||
const TRACKER_URL = `http://${LOCAL_IP}:${TRACKER_PORT}/announce`;
|
||||
const API_BASE_URL = `http://${LOCAL_IP}:${API_PORT}/${STATIC_API_PATH}/`;
|
||||
const API_BASE_URL = `http://${LOCAL_IP}:${API_PORT}${STATIC_API_PATH}/`;
|
||||
|
||||
// Initialize Fastify instance
|
||||
const app = Fastify({ logger: true });
|
||||
@@ -90,44 +89,22 @@ async function generateMockFile(filePath: string, size: number) {
|
||||
await fsp.truncate(filePath, size);
|
||||
}
|
||||
|
||||
// Generate bittorrent file
|
||||
function generateTorrent(folderPath: string, torrentPath: string) {
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
createTorrent(
|
||||
folderPath,
|
||||
// Add bittorrent and seed
|
||||
async function seedTorrent(
|
||||
torrentPath: string,
|
||||
contentFolder: string
|
||||
): Promise<Torrent> {
|
||||
return new Promise((resolve) => {
|
||||
const torrent = webTorrent.seed(
|
||||
contentFolder,
|
||||
{
|
||||
announceList: [[TRACKER_URL]], // Specify tracker URL
|
||||
private: false,
|
||||
createdBy: 'WebTorrent',
|
||||
comment: 'Generated by WebTorrent server',
|
||||
createdBy: 'Konobangu Testing Torrents',
|
||||
urlList: [API_BASE_URL],
|
||||
},
|
||||
async (err, torrent) => {
|
||||
if (err) {
|
||||
reject(new Error(`Failed to create torrent: ${err}`));
|
||||
return;
|
||||
}
|
||||
await fsp.writeFile(torrentPath, torrent);
|
||||
if (!fs.existsSync(torrentPath)) {
|
||||
reject(new Error(`Torrent file ${torrentPath} was not created`));
|
||||
return;
|
||||
}
|
||||
console.log(`Generated torrent with tracker: ${TRACKER_URL}`);
|
||||
resolve();
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// Add bittorrent and seed
|
||||
async function seedTorrent(torrentPath: string): Promise<Torrent> {
|
||||
return new Promise((resolve) => {
|
||||
const torrent = webTorrent.seed(
|
||||
torrentPath,
|
||||
{
|
||||
announce: [TRACKER_URL],
|
||||
},
|
||||
(t) => {
|
||||
async (t) => {
|
||||
await fsp.writeFile(torrentPath, t.torrentFile);
|
||||
resolve(t);
|
||||
}
|
||||
);
|
||||
@@ -156,9 +133,8 @@ app.post<{ Body: RequestSchema }>('/api/torrents/mock', async (req, _reply) => {
|
||||
}
|
||||
|
||||
const torrentPath = path.join(WORKSPACE_PATH, `${id}.torrent`);
|
||||
await generateTorrent(idFolder, torrentPath);
|
||||
|
||||
const torrent = await seedTorrent(torrentPath);
|
||||
const torrent = await seedTorrent(torrentPath, idFolder);
|
||||
const magnetUrl = `magnet:?xt=urn:btih:${torrent.infoHash}&tr=${TRACKER_URL}`;
|
||||
|
||||
return {
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
"dependencies": {
|
||||
"@fastify/static": "^8.1.1",
|
||||
"bittorrent-tracker": "^11.2.1",
|
||||
"create-torrent": "^6.1.0",
|
||||
"fastify": "^5.2.2",
|
||||
"tsx": "^4.19.2",
|
||||
"webtorrent": "^2.5.19"
|
||||
|
||||
3
packages/testing-torrents/pnpm-lock.yaml
generated
3
packages/testing-torrents/pnpm-lock.yaml
generated
@@ -14,9 +14,6 @@ importers:
|
||||
bittorrent-tracker:
|
||||
specifier: ^11.2.1
|
||||
version: 11.2.1
|
||||
create-torrent:
|
||||
specifier: ^6.1.0
|
||||
version: 6.1.0
|
||||
fastify:
|
||||
specifier: ^5.2.2
|
||||
version: 5.2.2
|
||||
|
||||
Reference in New Issue
Block a user