From bce3cba997997b54fab4b2bd5a56753ff8ad1878 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 2 Mar 2023 15:16:11 +0800 Subject: [PATCH] vjudge: luogu: parse errormsg --- packages/vjudge/src/providers/luogu.ts | 33 +++++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/vjudge/src/providers/luogu.ts b/packages/vjudge/src/providers/luogu.ts index 203c2228d..82379419d 100644 --- a/packages/vjudge/src/providers/luogu.ts +++ b/packages/vjudge/src/providers/luogu.ts @@ -100,15 +100,30 @@ export default class LuoguProvider extends BasicFetcher implements IBasicProvide lang = lang.slice(0, -2); } lang = lang.split('luogu.')[1]; - const result = await this.post(`/fe/api/problem/submit/${id}${this.account.query || ''}`) - .set('referer', `https://www.luogu.com.cn/problem/${id}`) - .send({ - code, - lang: +lang, - enableO2, - }); - logger.info('RecordID:', result.body.rid); - return result.body.rid; + try { + const result = await this.post(`/fe/api/problem/submit/${id}${this.account.query || ''}`) + .set('referer', `https://www.luogu.com.cn/problem/${id}`) + .send({ + code, + lang: +lang, + enableO2, + }); + logger.info('RecordID:', result.body.rid); + return result.body.rid; + } catch (e) { + let parsed = e; + if (e.text) { + try { + const message = JSON.parse(e.text).errorMessage; + if (!message) throw e; + parsed = new Error(message); + parsed.stack = e.stack; + } catch (err) { + throw e; + } + } + throw parsed; + } } async waitForSubmission(id: string, next, end) {