@@ -11,7 +11,7 @@ def __init__(self, endpoint, auth_headers, *, wait=False) -> None:
11
11
self .wait = wait
12
12
13
13
try :
14
- self .languages = self .get_languages ()
14
+ self .languages = { lang [ "id" ]: lang for lang in self .get_languages ()}
15
15
except Exception :
16
16
raise RuntimeError ("Client authentication failed." )
17
17
@@ -51,8 +51,17 @@ def get_statuses(self) -> list[dict]:
51
51
r .raise_for_status ()
52
52
return r .json ()
53
53
54
+ def is_language_supported (self , language_id : int ) -> bool :
55
+ return language_id in self .languages
56
+
54
57
def create_submission (self , submission : Submission ) -> None :
55
- # TODO: check if client supports specified language_id
58
+ # Check if submission contains supported language.
59
+ if not self .is_language_supported (language_id = submission .language_id ):
60
+ raise RuntimeError (
61
+ f"Client { type (self ).__name__ } does not support language with "
62
+ f"id { submission .language_id } !"
63
+ )
64
+
56
65
params = {
57
66
"base64_encoded" : "true" ,
58
67
"wait" : str (self .wait ).lower (),
@@ -90,6 +99,14 @@ def get_submission(self, submission: Submission, *, fields=None) -> None:
90
99
submission .set_attributes (resp .json ())
91
100
92
101
def create_submissions (self , submissions : list [Submission ]) -> None :
102
+ # Check if all submissions contain supported language.
103
+ for submission in submissions :
104
+ if not self .is_language_supported (language_id = submission .language_id ):
105
+ raise RuntimeError (
106
+ f"Client { type (self ).__name__ } does not support language with "
107
+ f"id { submission .language_id } !"
108
+ )
109
+
93
110
params = {
94
111
"base64_encoded" : "true" ,
95
112
"wait" : str (self .wait ).lower (),
@@ -195,11 +212,11 @@ def get_submission(self, submission: Submission, *, fields=None) -> None:
195
212
self ._update_endpoint_header (self .DEFAULT_GET_SUBMISSION_ENDPOINT )
196
213
return super ().get_submission (submission , fields = fields )
197
214
198
- def create_submissions (self , submissions : Submission ) -> None :
215
+ def create_submissions (self , submissions : list [ Submission ] ) -> None :
199
216
self ._update_endpoint_header (self .DEFAULT_CREATE_SUBMISSIONS_ENDPOINT )
200
217
return super ().create_submissions (submissions )
201
218
202
- def get_submissions (self , submissions : Submission , * , fields = None ) -> None :
219
+ def get_submissions (self , submissions : list [ Submission ] , * , fields = None ) -> None :
203
220
self ._update_endpoint_header (self .DEFAULT_GET_SUBMISSIONS_ENDPOINT )
204
221
return super ().get_submissions (submissions , fields = fields )
205
222
@@ -253,11 +270,11 @@ def get_submission(self, submission: Submission, *, fields=None):
253
270
self ._update_endpoint_header (self .DEFAULT_GET_SUBMISSION_ENDPOINT )
254
271
return super ().get_submission (submission , fields = fields )
255
272
256
- def create_submissions (self , submission : Submission ) -> None :
273
+ def create_submissions (self , submission : list [ Submission ] ) -> None :
257
274
self ._update_endpoint_header (self .DEFAULT_CREATE_SUBMISSIONS_ENDPOINT )
258
275
return super ().create_submissions (submission )
259
276
260
- def get_submissions (self , submission : Submission , * , fields = None ) -> None :
277
+ def get_submissions (self , submission : list [ Submission ] , * , fields = None ) -> None :
261
278
self ._update_endpoint_header (self .DEFAULT_GET_SUBMISSIONS_ENDPOINT )
262
279
return super ().get_submissions (submission , fields = fields )
263
280
0 commit comments