Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raven support added #35

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"minio": "^7.0.3",
"pg": "^7.4.3",
"pg-hstore": "^2.3.2",
"raven": "^2.6.4",
"sequelize": "^4.22.6",
"uuid": "^3.3.2"
},
Expand Down Expand Up @@ -52,8 +53,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": [
Expand Down
8 changes: 5 additions & 3 deletions src/routes/api/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ const handleTimeoutForSubmission = function (submissionId: number) {
case 'callback':
axios.post(job.callback, errorResponse)
}

delete runPool[submissionId]
}

const handleSuccessForSubmission = function (result: RunResponse) {
Expand Down Expand Up @@ -79,6 +81,8 @@ const handleSuccessForSubmission = function (result: RunResponse) {
})()
break;
}

delete runPool[result.id]
}

/**
Expand Down Expand Up @@ -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'
Expand Down Expand Up @@ -172,7 +176,6 @@ route.post('/', (req, res, next) => {
setTimeout(() => {
if (runPool[submission.id]) {
handleTimeoutForSubmission(submission.id)
delete runPool[submission.id]
}
}, config.RUN.TIMEOUT)

Expand All @@ -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(<any>{
end_time: new Date()
Expand Down
8 changes: 7 additions & 1 deletion src/server.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import express = require('express')
import dbg = require('debug')
import path = require ('path')
import Raven = require('raven')
import apiRoute from './routes/api'

const DSN = process.env.DSN
const debug = dbg('server:main')

const app = express()

Raven.config(DSN).install()
app.use(Raven.requestHandler())
app.use(Raven.errorHandler())

app.use(express.json())
app.use(express.urlencoded({extended: true}))
app.use('/docs', express.static(path.join(__dirname, '../docs')))
Expand Down
4 changes: 2 additions & 2 deletions src/utils/s3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
})
Expand Down
5 changes: 3 additions & 2 deletions src/validators/ApiKeyValidators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import {ApiKeyAttrs, ApiKeys} from '../db/models'

export function checkValidApiKey (req: Request): Promise<boolean> {
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'))
}
Expand Down Expand Up @@ -42,4 +43,4 @@ export function checkValidApiKey (req: Request): Promise<boolean> {



}
}
1 change: 1 addition & 0 deletions test.env
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ DB_HOST=postgres
DB_NAME=judgeapi-dev
DB_USER=judgeapi
DB_PASS=judgeapi
DSN=randomDSNString
JUDGEAPI_HOST=localhost
JUDGEAPI_PORT=3737
DEBUG=test:*
Loading