mirror of
https://github.com/zkldi/Tachi.git
synced 2026-10-14 18:19:42 +03:00
Make ir/direct-manual fast returning and polling.
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
import { Router } from "express";
|
||||
import { SYMBOL_TachiAPIAuth } from "lib/constants/tachi";
|
||||
import { ExpressWrappedScoreImportMain } from "lib/score-import/framework/express-wrapper";
|
||||
import { MakeScoreImport } from "lib/score-import/framework/score-import";
|
||||
import { ScoreImportJobData } from "lib/score-import/worker/types";
|
||||
import { ServerConfig } from "lib/setup/config";
|
||||
import { RequirePermissions } from "server/middleware/auth";
|
||||
import { Random20Hex } from "utils/misc";
|
||||
|
||||
const router: Router = Router({ mergeParams: true });
|
||||
|
||||
@@ -10,16 +14,42 @@ const router: Router = Router({ mergeParams: true });
|
||||
* @name POST /ir/direct-manual/import
|
||||
*/
|
||||
router.post("/import", RequirePermissions("submit_score"), async (req, res) => {
|
||||
const intent = req.header("X-User-Intent");
|
||||
const userIntent = !!req.header("X-User-Intent");
|
||||
|
||||
const responseData = await ExpressWrappedScoreImportMain(
|
||||
req[SYMBOL_TachiAPIAuth].userID!,
|
||||
!!intent,
|
||||
"ir/direct-manual",
|
||||
[req.body]
|
||||
);
|
||||
if (ServerConfig.USE_EXTERNAL_SCORE_IMPORT_WORKER) {
|
||||
const importID = Random20Hex();
|
||||
|
||||
return res.status(responseData.statusCode).json(responseData.body);
|
||||
const job: ScoreImportJobData<"ir/direct-manual"> = {
|
||||
importID,
|
||||
userID: req[SYMBOL_TachiAPIAuth].userID!,
|
||||
userIntent,
|
||||
importType: "ir/direct-manual",
|
||||
parserArguments: [req.body],
|
||||
};
|
||||
|
||||
// Fire the score import, but make no guarantees about its state.
|
||||
MakeScoreImport(job);
|
||||
|
||||
return res.status(202).json({
|
||||
success: true,
|
||||
description:
|
||||
"Import loaded into queue. You can poll the provided URL for information on when its complete.",
|
||||
body: {
|
||||
url: `${ServerConfig.OUR_URL}/api/v1/imports/${importID}/poll-status`,
|
||||
importID,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
// Fire the score import and wait for it to finish!
|
||||
const importResponse = await ExpressWrappedScoreImportMain<"ir/direct-manual">(
|
||||
req[SYMBOL_TachiAPIAuth].userID!,
|
||||
userIntent,
|
||||
"ir/direct-manual",
|
||||
[req.body]
|
||||
);
|
||||
|
||||
return res.status(importResponse.statusCode).json(importResponse.body);
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user