33====================================
44The core module of CodeRunner
55"""
6+ import json
67import os
7-
8- import requests
8+ import urllib . parse
9+ import urllib . request
910
1011# language IDs on judge0, see Documentation
11- languages = {"C++" : 10 , "Java" : 27 , "Python" : 34 , "C" : 4 }
12+ languages = {"C++" : 10 , "Java" : 27 , "Python" : 34 , "C" : 4 , "Bash" : 1 }
1213
1314api_params = {
1415 "number_of_runs" : "1" ,
2728FIELDS = "?fields=stdout,memory,time,status,stderr,exit_code,created_at"
2829
2930
30- class Run :
31+ class code :
3132 """
3233 Args:
3334 - Source Code
@@ -87,8 +88,11 @@ def __readStatus(self, token: str):
8788 Check Submission status
8889 """
8990 while True :
90- req = requests .get (API_URL + token ["token" ] + FIELDS )
91- self .__response = req .json ()
91+ req = urllib .request .Request (API_URL + token ["token" ] + FIELDS )
92+ with urllib .request .urlopen (req ) as response :
93+ req = response .read ()
94+
95+ self .__response = json .loads (req .decode ("utf-8" ))
9296 self .__memory = self .__response ["memory" ]
9397 self .__time = self .__response ["time" ]
9498 status = self .__response ["status" ]["description" ]
@@ -108,8 +112,12 @@ def __submit(self):
108112 api_params ["language_id" ] = self .language_id
109113 api_params ["source_code" ] = self .source
110114
111- res = requests .post (API_URL , data = api_params )
112- token = res .json ()
115+ post_data = urllib .parse .urlencode (api_params ).encode ("ascii" )
116+ req = urllib .request .Request (API_URL , post_data )
117+ with urllib .request .urlopen (req ) as response :
118+ req = response .read ()
119+ token = json .loads (req .decode ("utf-8" ))
120+
113121 return token
114122
115123 def getSubmissionDate (self ):
@@ -150,17 +158,24 @@ def getTime(self):
150158 """
151159 return self .__time
152160
153- def getStatus (self ):
161+ def run (self ):
154162 """
155163 submit the source code on judge0's server & return status
156164 """
157- if self .path :
158- if self .inp is not None :
159- self .inp = self .__readStandardInput ()
160- self .source = self .__readCode ()
161- self .output = self .__readExpectedOutput ()
165+ if os .path .exists (self .source ):
166+ if self .path :
167+ if self .inp is not None :
168+ self .inp = self .__readStandardInput ()
169+ self .source = self .__readCode ()
170+ self .output = self .__readExpectedOutput ()
162171
163172 token = self .__submit ()
164- status = self .__readStatus (token )
173+ self .__token = token
174+
175+ def getStatus (self ):
176+ """
177+ Return submission status
178+ """
179+ status = self .__readStatus (self .__token )
165180
166181 return status
0 commit comments