mirror of
https://github.com/PretendoNetwork/BOSS.git
synced 2026-04-24 15:07:31 -05:00
perf: Remove sync IO from npdi and npts
This commit is contained in:
parent
1fd43ce0f7
commit
068a6358bd
|
|
@ -1,7 +1,7 @@
|
|||
import path from 'node:path';
|
||||
import fs from 'fs-extra';
|
||||
import express from 'express';
|
||||
import subdomain from 'express-subdomain';
|
||||
import { fileErrCallback } from '@/util';
|
||||
|
||||
const npdi = express.Router();
|
||||
|
||||
|
|
@ -9,15 +9,13 @@ npdi.get('/p01/data/1/:titleHash/:dataID/:fileHash', (request, response) => {
|
|||
const { titleHash, fileHash } = request.params;
|
||||
const contentPath = path.normalize(`${__dirname}/../../cdn/content/encrypted/${titleHash}/${fileHash}`);
|
||||
|
||||
if (fs.existsSync(contentPath)) {
|
||||
response.set('Content-Type', 'applicatoin/octet-stream');
|
||||
response.set('Content-Disposition', 'attachment');
|
||||
response.set('Content-Transfer-Encoding', 'binary');
|
||||
response.set('Content-Type', 'applicatoin/octet-stream');
|
||||
response.sendFile(contentPath);
|
||||
} else {
|
||||
response.sendStatus(404);
|
||||
}
|
||||
response.sendFile(contentPath, {
|
||||
headers: {
|
||||
'Content-Type': 'applicatoin/octet-stream',
|
||||
'Content-Disposition': 'attachment',
|
||||
'Content-Transfer-Encoding': 'binary',
|
||||
}
|
||||
}, fileErrCallback(response));
|
||||
});
|
||||
|
||||
const router = express.Router();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import path from 'node:path';
|
||||
import fs from 'fs-extra';
|
||||
import express from 'express';
|
||||
import subdomain from 'express-subdomain';
|
||||
import { fileErrCallback } from '@/util';
|
||||
|
||||
const npts = express.Router();
|
||||
|
||||
|
|
@ -9,24 +9,22 @@ npts.get('/p01/tasksheet/:id/:hash/:fileName', (request, response) => {
|
|||
const { id, hash, fileName } = request.params;
|
||||
const tasksheetPath = path.normalize(`${__dirname}/../../cdn/tasksheet/${id}/${hash}/${fileName}`);
|
||||
|
||||
if (fs.existsSync(tasksheetPath)) {
|
||||
response.set('Content-Type', 'text/xml');
|
||||
response.sendFile(tasksheetPath);
|
||||
} else {
|
||||
response.sendStatus(404);
|
||||
}
|
||||
response.sendFile(tasksheetPath, {
|
||||
headers: {
|
||||
'Content-Type': 'text/xml'
|
||||
}
|
||||
}, fileErrCallback(response));
|
||||
});
|
||||
|
||||
npts.get('/p01/tasksheet/:id/:hash/:subfolder/:fileName', (request, response) => {
|
||||
const { id, hash, subfolder, fileName } = request.params;
|
||||
const tasksheetPath = path.normalize(`${__dirname}/../../cdn/tasksheet/${id}/${hash}/_subfolder/${subfolder}/${fileName}`);
|
||||
|
||||
if (fs.existsSync(tasksheetPath)) {
|
||||
response.set('Content-Type', 'text/xml');
|
||||
response.sendFile(tasksheetPath);
|
||||
} else {
|
||||
response.sendStatus(404);
|
||||
}
|
||||
response.sendFile(tasksheetPath, {
|
||||
headers: {
|
||||
'Content-Type': 'text/xml'
|
||||
}
|
||||
}, fileErrCallback(response));
|
||||
});
|
||||
|
||||
const router = express.Router();
|
||||
|
|
|
|||
13
src/util.ts
13
src/util.ts
|
|
@ -11,6 +11,7 @@ import { GetUserDataResponse } from '@pretendonetwork/grpc/account/get_user_data
|
|||
import { GetUserFriendPIDsResponse } from '@pretendonetwork/grpc/friends/get_user_friend_pids_rpc';
|
||||
import { config, disabledFeatures } from '@/config-manager';
|
||||
import { NodeJsClient } from '@smithy/types';
|
||||
import { Response } from 'express';
|
||||
|
||||
let s3: NodeJsClient<S3Client>;
|
||||
|
||||
|
|
@ -58,6 +59,18 @@ const VALID_FILE_NOTIFY_CONDITIONS = [
|
|||
'app', 'account'
|
||||
];
|
||||
|
||||
export function fileErrCallback(response: Response) {
|
||||
return (err: NodeJS.ErrnoException): void => {
|
||||
if (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
response.sendStatus(404);
|
||||
} else {
|
||||
response.status(500).send('Server Error');
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export function md5(input: crypto.BinaryLike): string {
|
||||
return crypto.createHash('md5').update(input).digest('hex');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user