@@ -12,83 +12,76 @@ class CodeforcesApi(CodeforcesApiRequestMaker):
1212 """
1313
1414 session = None
15+ method = None
1516
16- def __init__ (self , api_key = None , secret = None , random_number = 1000000 ):
17+ def _make_request (self , method , ** payload ):
18+ """
19+ Making request to codeforces.com
20+
21+ Uses different methods (POST or GET) but be aware of 413 error when using GET.
22+ """
23+ request_data = self .generate_request (method , ** payload )
24+ request = self .session .request (
25+ self .method , request_data ["request_url" ], data = request_data ["data" ]
26+ )
27+ return self .get_response (request )
28+
29+ def __init__ (self , api_key = None , secret = None , random_number = 1000000 , method = "POST" ):
1730 """
1831 Initializing class. All we will need is a session to optimize performance.
1932 """
2033 super ().__init__ (api_key , secret , random_number )
2134 self .session = requests .Session ()
35+ if method == "POST" or method == "GET" :
36+ self .method = method
37+ else :
38+ raise ValueError ("method should be POST or GET" )
2239
2340 def blog_entry_comments (self , blog_entry_id ):
2441 """
2542 Get blogEntry.commnets for blog, blog_entry_id required.
2643
2744 Returns parsed response from codeforces.com.
2845 """
29- request_data = self .generate_request (
46+ return self ._make_request (
3047 "blogEntry.comments" , ** {"blogEntryId" : str (blog_entry_id )}
3148 )
32- request = self .session .post (
33- request_data ["request_url" ], data = request_data ["data" ]
34- )
35- return self .get_response (request )
3649
3750 def blog_entry_view (self , blog_entry_id ):
3851 """
3952 Get blogEntry.view for blog, blog_entry_id required.
4053
4154 Returns parsed response from codeforces.com.
4255 """
43- request_data = self .generate_request (
56+ return self ._make_request (
4457 "blogEntry.view" , ** {"blogEntryId" : str (blog_entry_id )}
4558 )
46- request = self .session .post (
47- request_data ["request_url" ], data = request_data ["data" ]
48- )
49- return self .get_response (request )
5059
5160 def contest_hacks (self , contest_id ):
5261 """
5362 Get contest.hacks for contest, contest_id required.
5463
5564 Returns parsed response from codeforces.com.
5665 """
57- request_data = self .generate_request (
58- "contest.hacks" , ** {"contestId" : str (contest_id )}
59- )
60- request = self .session .post (
61- request_data ["request_url" ], data = request_data ["data" ]
62- )
63- return self .get_response (request )
66+ return self ._make_request ("contest.hacks" , ** {"contestId" : str (contest_id )})
6467
6568 def contest_list (self , gym = False ):
6669 """
6770 Get all contests you can get all gym by gym parameter.
6871
6972 Returns parsed response from codeforces.com
7073 """
71- request_data = self .generate_request (
72- "contest.list" , ** {"gym" : str (gym ).lower ()}
73- )
74- request = self .session .post (
75- request_data ["request_url" ], data = request_data ["data" ]
76- )
77- return self .get_response (request )
74+ return self ._make_request ("contest.list" , ** {"gym" : str (gym ).lower ()})
7875
7976 def contest_rating_changes (self , contest_id ):
8077 """
8178 Get contest.ratingChanges for the contest, contest_id required.
8279
8380 Returns parsed response from codeforces.com.
8481 """
85- request_data = self .generate_request (
82+ return self ._make_request (
8683 "contest.ratingChanges" , ** {"contestId" : str (contest_id )}
8784 )
88- request = self .session .post (
89- request_data ["request_url" ], data = request_data ["data" ]
90- )
91- return self .get_response (request )
9285
9386 def contest_standings (
9487 self ,
@@ -132,15 +125,13 @@ def contest_standings(
132125 handles_str = ""
133126 for handle in handles :
134127 handles_str += str (handle ) + ";"
135- request_data = self .generate_request ("user.info" , ** {"handles" : handles_str })
128+ request_data = self .generate_request (
129+ "user.info" , ** {"handles" : handles_str }
130+ )
136131 parameters ["handles" ] = handles_str
137132 if room != - 1 :
138133 parameters ["room" ] = str (room )
139- request_data = self .generate_request ("contest.standings" , ** parameters )
140- request = self .session .post (
141- request_data ["request_url" ], data = request_data ["data" ]
142- )
143- return self .get_response (request )
134+ return self ._make_request ("contest.standings" , ** parameters )
144135
145136 def contest_status (self , contest_id , handle = "" , start = - 1 , count = - 1 ):
146137 """
@@ -163,11 +154,7 @@ def contest_status(self, contest_id, handle="", start=-1, count=-1):
163154 parameters ["start" ] = str (start )
164155 if count != - 1 :
165156 parameters ["count" ] = str (count )
166- request_data = self .generate_request ("contest.status" , ** parameters )
167- request = self .session .post (
168- request_data ["request_url" ], data = request_data ["data" ]
169- )
170- return self .get_response (request )
157+ return self ._make_request ("contest.status" , ** parameters )
171158
172159 def problemset_problems (self , tags = ["" ], problemset_name = "" ):
173160 """
@@ -186,11 +173,7 @@ def problemset_problems(self, tags=[""], problemset_name=""):
186173 parameters ["tags" ] = tags
187174 if problemset_name != "" :
188175 parameters ["problemsetName" ] = problemset_name
189- request_data = self .generate_request ("problemset.problems" , ** parameters )
190- request = self .session .post (
191- request_data ["request_url" ], data = request_data ["data" ]
192- )
193- return self .get_response (request )
176+ return self ._make_request ("problemset.problems" , ** parameters )
194177
195178 def problemset_recent_status (self , count , problemset_name = "" ):
196179 """
@@ -211,11 +194,7 @@ def problemset_recent_status(self, count, problemset_name=""):
211194 }
212195 if problemset_name != "" :
213196 parameters ["problemsetName" ] = problemset_name
214- request_data = self .generate_request ("problemset.recentStatus" , ** parameters )
215- request = self .session .post (
216- request_data ["request_url" ], data = request_data ["data" ]
217- )
218- return self .get_response (request )
197+ return self ._make_request ("problemset.recentStatus" , ** parameters )
219198
220199 def recent_actions (self , max_count = 100 ):
221200 """
@@ -229,13 +208,7 @@ def recent_actions(self, max_count=100):
229208 """
230209 if max_count > 100 :
231210 raise OverflowError ("Max_count should be less or equal to 1000" )
232- request_data = self .generate_request (
233- "recentActions" , ** {"maxCount" : str (max_count )}
234- )
235- request = self .session .post (
236- request_data ["request_url" ], data = request_data ["data" ]
237- )
238- return self .get_response (request )
211+ return self ._make_request ("recentActions" , ** {"maxCount" : str (max_count )})
239212
240213 def user_blog_entries (self , handle ):
241214 """
@@ -247,13 +220,7 @@ def user_blog_entries(self, handle):
247220 """
248221 if handle == "" :
249222 raise TypeError ("Handle should not be empty" )
250- request_data = self .generate_request (
251- "user.blogEntries" , ** {"handle" : str (handle )}
252- )
253- request = self .session .post (
254- request_data ["request_url" ], data = request_data ["data" ]
255- )
256- return self .get_response (request )
223+ return self ._make_request ("user.blogEntries" , ** {"handle" : str (handle )})
257224
258225 def user_friends (self , only_online = False ):
259226 """
@@ -267,13 +234,9 @@ def user_friends(self, only_online=False):
267234 """
268235 if self .anonimus :
269236 raise TypeError ("Auth is required." )
270- request_data = self .generate_request (
237+ return self ._make_request (
271238 "user.friends" , ** {"onlyOnline" : str (only_online ).lower ()}
272239 )
273- request = self .session .post (
274- request_data ["request_url" ], data = request_data ["data" ]
275- )
276- return self .get_response (request )
277240
278241 def user_info (self , handles ):
279242 """
@@ -290,11 +253,7 @@ def user_info(self, handles):
290253 handles_str = ""
291254 for handle in handles :
292255 handles_str += str (handle ) + ";"
293- request_data = self .generate_request ("user.info" , ** {"handles" : handles_str })
294- request = self .session .post (
295- request_data ["request_url" ], data = request_data ["data" ]
296- )
297- return self .get_response (request )
256+ return self ._make_request ("user.info" , ** {"handles" : handles_str })
298257
299258 def user_rated_list (self , active_only = False ):
300259 """
@@ -304,13 +263,9 @@ def user_rated_list(self, active_only=False):
304263
305264 Returns parsed response from codeforces.com.
306265 """
307- request_data = self .generate_request (
266+ return self ._make_request (
308267 "user.ratedList" , ** {"activeOnly" : str (active_only ).lower ()}
309268 )
310- request = self .session .post (
311- request_data ["request_url" ], data = request_data ["data" ]
312- )
313- return self .get_response (request )
314269
315270 def user_rating (self , handle ):
316271 """
@@ -320,11 +275,7 @@ def user_rating(self, handle):
320275
321276 Returns parsed response from codeforces.com.
322277 """
323- request_data = self .generate_request ("user.rating" , ** {"handle" : str (handle )})
324- request = self .session .post (
325- request_data ["request_url" ], data = request_data ["data" ]
326- )
327- return self .get_response (request )
278+ return self ._make_request ("user.rating" , ** {"handle" : str (handle )})
328279
329280 def user_status (self , handle , start = - 1 , count = - 1 ):
330281 """
@@ -345,8 +296,4 @@ def user_status(self, handle, start=-1, count=-1):
345296 parameters ["from" ] = str (start )
346297 if count != - 1 :
347298 parameters ["count" ] = str (count )
348- request_data = self .generate_request ("user.status" , ** parameters )
349- request = self .session .post (
350- request_data ["request_url" ], data = request_data ["data" ]
351- )
352- return self .get_response (request )
299+ return self ._make_request ("user.status" , ** parameters )
0 commit comments