Skip to content

Commit 7d47d10

Browse files
committed
add submission validators
1 parent b03d161 commit 7d47d10

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

docs/api_project.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/api_project.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "title": "judge-blocks API", "url": "https://judge2.codingblocks.com/api", "sampleUrl": "https://judge2.codingblocks.com/api", "name": "judge-api", "version": "1.2.0", "description": "Judge API", "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2020-04-17T14:00:28.777Z", "url": "http://apidocjs.com", "version": "0.17.7" }}
1+
{ "title": "judge-blocks API", "url": "https://judge2.codingblocks.com/api", "sampleUrl": "https://judge2.codingblocks.com/api", "name": "judge-api", "version": "1.2.0", "description": "Judge API", "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2020-04-17T14:09:53.972Z", "url": "http://apidocjs.com", "version": "0.17.7" }}

src/routes/api/run/validators.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ class RunValidator extends BaseValidator {
2828
callback: Joi
2929
.string()
3030
.uri()
31-
.when('mode', { is: 'callback', then: Joi.string().required() })
31+
.when('mode', { is: 'callback', then: Joi.string().required() }),
32+
enc: Joi
33+
.string()
34+
.valid('base64', 'url')
3235
})
3336
}
3437

src/routes/api/submit/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { Router } from 'express'
22
import Controller from './controller'
3+
import Validator from './validators'
34
import { successListener } from 'rabbitmq/jobqueue'
45

56
const router: Router = Router()
67

7-
router.post('/', Controller.SubmitPOST)
8+
router.post('/', Validator.POST, Controller.SubmitPOST)
89
successListener.on('submit_result', Controller.onSuccess)
910

1011
export default router

src/routes/api/submit/validators.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,43 @@
1+
import { Handler } from 'express'
2+
import BaseValidator from 'validators/baseValidator'
3+
import * as Joi from '@hapi/joi'
14

5+
class RunValidator extends BaseValidator {
6+
POST: Handler
7+
8+
constructor() {
9+
super()
10+
this.POST = this.requestValidator(this.POSTSchema)
11+
}
12+
13+
POSTSchema = Joi.object({
14+
lang: Joi
15+
.string()
16+
.required(),
17+
source: Joi
18+
.string()
19+
.required(),
20+
mode: Joi
21+
.string()
22+
.valid('sync', 'callback', 'poll'),
23+
timelimit: Joi
24+
.number(),
25+
callback: Joi
26+
.string()
27+
.uri()
28+
.when('mode', { is: 'callback', then: Joi.string().required() }),
29+
testcases: Joi
30+
.array()
31+
.min(1)
32+
.items(
33+
Joi.object({
34+
id: Joi.number().required(),
35+
stdin: Joi.string().uri(),
36+
stdout: Joi.string().uri()
37+
})
38+
)
39+
.required()
40+
})
41+
}
42+
43+
export default new RunValidator()

0 commit comments

Comments
 (0)