diff options
-rw-r--r-- | Pipfile | 1 | ||||
-rw-r--r-- | Pipfile.lock | 31 | ||||
-rw-r--r-- | snekbox/api/resources/eval.py | 16 |
3 files changed, 46 insertions, 2 deletions
@@ -6,6 +6,7 @@ name = "pypi" [packages] falcon = "*" gunicorn = "*" +jsonschema = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 4e4a053..e0c08a0 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f2a5f388618a6609f28deb1bc71675d8a0deb5571aff8c79a698bad79cdbca79" + "sha256": "8dda3bfb1f2f9109b882225e4c55e3a561e25a7d80845889b4ffe5ad250cc86e" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,13 @@ ] }, "default": { + "attrs": { + "hashes": [ + "sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", + "sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399" + ], + "version": "==19.1.0" + }, "falcon": { "hashes": [ "sha256:18157af2a4fc3feedf2b5dcc6196f448639acf01c68bc33d4d5a04c3ef87f494", @@ -43,6 +50,28 @@ ], "index": "pypi", "version": "==19.9.0" + }, + "jsonschema": { + "hashes": [ + "sha256:0c0a81564f181de3212efa2d17de1910f8732fa1b71c42266d983cd74304e20d", + "sha256:a5f6559964a3851f59040d3b961de5e68e70971afb88ba519d27e6a039efff1a" + ], + "index": "pypi", + "version": "==3.0.1" + }, + "pyrsistent": { + "hashes": [ + "sha256:16692ee739d42cf5e39cef8d27649a8c1fdb7aa99887098f1460057c5eb75c3a", + "sha256:1b304bab4d25fbe2b5bf32034d0d904bfc870f7f4ed9dccec6ae388978f0ef6f" + ], + "version": "==0.15.2" + }, + "six": { + "hashes": [ + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" + ], + "version": "==1.12.0" } }, "develop": { diff --git a/snekbox/api/resources/eval.py b/snekbox/api/resources/eval.py index 5558b4f..e6c5119 100644 --- a/snekbox/api/resources/eval.py +++ b/snekbox/api/resources/eval.py @@ -1,6 +1,7 @@ import logging import falcon +from falcon.media.validators.jsonschema import validate from snekbox.nsjail import NsJail @@ -8,11 +9,24 @@ log = logging.getLogger(__name__) class EvalResource: + REQ_SCHEMA = { + "type": "object", + "properties": { + "input": { + "type": "string" + } + }, + "required": [ + "input" + ] + } + def __init__(self): self.nsjail = NsJail() + @validate(REQ_SCHEMA) def on_post(self, req, resp): - code = req.media.get("code") + code = req.media["input"] try: output = self.nsjail.python3(code) |