diff --git a/package.json b/package.json index c211f03..d3ab15c 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@types/request": "^2.0.8", "@types/sequelize": "^4.0.79", "chai": "^4.1.2", - "mkdirp": "^0.5.1", + "mkdirp": "^1.0.0", "mocha": "^5.0.0", "nyc": "^12.0.1", "request": "^2.83.0", @@ -52,8 +52,8 @@ }, "apidoc": { "title": "judge-blocks API", - "url": "http://judge.cb.lk/api", - "sampleUrl": "http://judge.cb.lk/api" + "url": "https://judge2.codingblocks.com/api", + "sampleUrl": "https://judge2.codingblocks.com/api" }, "nyc": { "extension": [ diff --git a/src/routes/api/run.ts b/src/routes/api/run.ts index a45b967..7c5903b 100644 --- a/src/routes/api/run.ts +++ b/src/routes/api/run.ts @@ -50,6 +50,8 @@ const handleTimeoutForSubmission = function (submissionId: number) { case 'callback': axios.post(job.callback, errorResponse) } + + delete runPool[submissionId] } const handleSuccessForSubmission = function (result: RunResponse) { @@ -79,6 +81,8 @@ const handleSuccessForSubmission = function (result: RunResponse) { })() break; } + + delete runPool[result.id] } /** @@ -109,7 +113,7 @@ const getRunPoolElement = function (body: RunRequestBody, res: Response): RunPoo * * @apiParam {String(Base64)} source source code to run (encoded in base64) * @apiParam {Enum} lang Language of code to execute - * @apiParam {String(Base64)} input [Optional] stdin input for the program (encoded in base64) + * @apiParam {String(Base64)} stdin [Optional] stdin input for the program (encoded in base64) * @apiParam {Enum} mode [Optional] mode for request. Default = `sync`, see: https://github.com/coding-blocks/judge-api/issues/16 * @apiParam {String)} callback [Optional] callback url for request. Required for `mode = callback` * @apiParam {String)} enc [Optional] Encoding type for stdin and source. Can be `url`|`base64`. Default = 'base64' @@ -172,7 +176,6 @@ route.post('/', (req, res, next) => { setTimeout(() => { if (runPool[submission.id]) { handleTimeoutForSubmission(submission.id) - delete runPool[submission.id] } }, config.RUN.TIMEOUT) @@ -198,7 +201,6 @@ route.post('/', (req, res, next) => { successListener.on('success', (result: RunResponse) => { if (runPool[result.id]) { handleSuccessForSubmission(result) - delete runPool[result.id] } Submissions.update({ end_time: new Date() diff --git a/src/utils/s3.ts b/src/utils/s3.ts index 6ccd6c4..490c010 100644 --- a/src/utils/s3.ts +++ b/src/utils/s3.ts @@ -5,8 +5,8 @@ import config = require('../../config') const client = new Minio.Client({ endPoint: config.S3.endpoint, - port: config.S3.port, - useSSL: config.S3.ssl, + port: +config.S3.port, + useSSL: !!config.S3.ssl, accessKey: config.S3.accessKey, secretKey: config.S3.secretKey, }) diff --git a/src/validators/ApiKeyValidators.ts b/src/validators/ApiKeyValidators.ts index c056191..c693347 100644 --- a/src/validators/ApiKeyValidators.ts +++ b/src/validators/ApiKeyValidators.ts @@ -4,7 +4,8 @@ import {ApiKeyAttrs, ApiKeys} from '../db/models' export function checkValidApiKey (req: Request): Promise { return new Promise((resolve, reject) => { - let apiKey = req.header('Authorization').split('Bearer ')[1] + let apiKey = req.header('Authorization') + apiKey = apiKey && apiKey.split('Bearer ')[1] if (!apiKey) { reject(new Error('No API Key in request')) } @@ -42,4 +43,4 @@ export function checkValidApiKey (req: Request): Promise { -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index db0dc65..7b5c14b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1891,6 +1891,11 @@ mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "0.0.8" +mkdirp@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.2.tgz#5ccd93437619ca7050b538573fc918327eba98fb" + integrity sha512-N2REVrJ/X/jGPfit2d7zea2J1pf7EAR5chIUcfHffAZ7gmlam5U65sAm76+o4ntQbSRdTjYf7qZz3chuHlwXEA== + mocha@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"