diff --git a/packages/hydrojudge/src/judge/interactive.ts b/packages/hydrojudge/src/judge/interactive.ts index 8ea0638e0..e99b33713 100644 --- a/packages/hydrojudge/src/judge/interactive.ts +++ b/packages/hydrojudge/src/judge/interactive.ts @@ -1,4 +1,3 @@ -import fs from 'fs-extra'; import Queue from 'p-queue'; import { STATUS } from '@hydrooj/utils/lib/status'; import compile from '../compile'; diff --git a/packages/hydrojudge/src/service.ts b/packages/hydrojudge/src/service.ts index a7869b501..a78bc38e1 100644 --- a/packages/hydrojudge/src/service.ts +++ b/packages/hydrojudge/src/service.ts @@ -76,17 +76,8 @@ async function postInit() { } async function fetchCodeFile(name: string) { - const res = await this.axios.post('judge/code', { id: name }); - const f = await this.axios.get(res.body.link, { responseType: 'stream' }) - .catch((e) => new Error(`DownloadFail(${name}): ${e.message}`)); - if (f instanceof Error) throw f; const target = path.join('/tmp/hydro/judge', name.replace(/\//g, '_')); - const w = fs.createWriteStream(target); - f.data.pipe(w); - await new Promise((resolve, reject) => { - w.on('finish', resolve); - w.on('error', (e) => reject(new Error(`DownloadFail(${name}): ${e.message}`))); - }); + await storage.get(`submission/${name}`, target); return target; } diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index ee4a00d97..c0d72de34 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -143,7 +143,7 @@ class RecordDetailHandler extends Handler { if (download) { const lang = langs[rdoc.lang]?.pretest || rdoc.lang; this.response.body = rdoc.code; - this.response.disposition = `attachment; filename="${langs[lang].code_file}` || `foo.${rdoc.lang}"`; + this.response.disposition = `attachment; filename="${langs[lang].code_file || `foo.${rdoc.lang}`}"`; return; } if (pdoc && !(rdoc.contest && this.user._id === rdoc.uid)) {