@@ -24,9 +24,8 @@ class JokeTypeError(Exception):
24
24
class Jokes :
25
25
def __init__ (self ):
26
26
self .http = urllib3 .PoolManager ()
27
- self .info = self .http .request (
28
- 'GET' , "https://sv443.net/jokeapi/v2/info" )
29
- self .info = data = json .loads (self .info .data .decode ('utf-8' ))["jokes" ]
27
+ self .info = self .http .request ("GET" , "https://sv443.net/jokeapi/v2/info" )
28
+ self .info = data = json .loads (self .info .data .decode ("utf-8" ))["jokes" ]
30
29
31
30
def build_request (
32
31
self ,
@@ -37,7 +36,7 @@ def build_request(
37
36
search_string = "" ,
38
37
id_range = [],
39
38
amount = 1 ,
40
- lang = "en"
39
+ lang = "en" ,
41
40
):
42
41
r = "https://sv443.net/jokeapi/v2/joke/"
43
42
@@ -76,7 +75,7 @@ def build_request(
76
75
else :
77
76
blacklistFlags = None
78
77
else :
79
- raise BlacklistError (f''' blacklist must be a list or tuple.''' )
78
+ raise BlacklistError (f""" blacklist must be a list or tuple.""" )
80
79
81
80
if response_format not in ["json" , "xml" , "yaml" , "txt" ]:
82
81
raise ResponseTypeError (
@@ -85,8 +84,8 @@ def build_request(
85
84
if joke_type :
86
85
if joke_type not in ["single" , "twopart" , "Any" ]:
87
86
raise JokeTypeError (
88
- ''' Invalid joke type.
89
- Available options are "single" or "twopart".'''
87
+ """ Invalid joke type.
88
+ Available options are "single" or "twopart"."""
90
89
)
91
90
return
92
91
else :
@@ -104,7 +103,8 @@ def build_request(
104
103
raise ValueError (
105
104
"id_range must be no longer than 2 items, \
106
105
id_range[0] must be greater than or equal to 0 and \
107
- id_range[1] must be less than or equal to {range_limit-1}." )
106
+ id_range[1] must be less than or equal to {range_limit-1}."
107
+ )
108
108
109
109
if amount > 10 :
110
110
raise ValueError (
@@ -135,29 +135,29 @@ def build_request(
135
135
136
136
return r
137
137
138
- def send_request (self ,
139
- request ,
140
- response_format ,
141
- return_headers ,
142
- auth_token ,
143
- user_agent
144
- ):
138
+ def send_request (
139
+ self , request , response_format , return_headers , auth_token , user_agent
140
+ ):
145
141
returns = []
146
142
147
143
if auth_token :
148
- r = self .http .request ('GET' ,
149
- request ,
150
- headers = {'Authorization' : str (auth_token ),
151
- 'user-agent' : str (user_agent ),
152
- 'accept-encoding' : 'gzip'
153
- }
154
- )
144
+ r = self .http .request (
145
+ "GET" ,
146
+ request ,
147
+ headers = {
148
+ "Authorization" : str (auth_token ),
149
+ "user-agent" : str (user_agent ),
150
+ "accept-encoding" : "gzip" ,
151
+ },
152
+ )
155
153
else :
156
- r = self .http .request ('GET' , request , headers = {
157
- 'user-agent' : str (user_agent ),
158
- 'accept-encoding' : 'gzip' })
154
+ r = self .http .request (
155
+ "GET" ,
156
+ request ,
157
+ headers = {"user-agent" : str (user_agent ), "accept-encoding" : "gzip" },
158
+ )
159
159
160
- data = r .data .decode (' utf-8' )
160
+ data = r .data .decode (" utf-8" )
161
161
162
162
if response_format == "json" :
163
163
try :
@@ -166,22 +166,38 @@ def send_request(self,
166
166
print (data )
167
167
raise
168
168
else :
169
- if len (' ' .join (re .split ("error" , data .lower ())[0 :][1 :]).replace (
170
- '<' , '' ).replace ('/' , '' ).replace (' ' , '' ).replace (':' , '' )
171
- .replace ('>' , '' )) == 4 :
172
- raise Exception (f"API returned an error. \
173
- Full response: \n \n { data } " )
169
+ if (
170
+ len (
171
+ " " .join (re .split ("error" , data .lower ())[0 :][1 :])
172
+ .replace ("<" , "" )
173
+ .replace ("/" , "" )
174
+ .replace (" " , "" )
175
+ .replace (":" , "" )
176
+ .replace (">" , "" )
177
+ )
178
+ == 4
179
+ ):
180
+ raise Exception (
181
+ f"API returned an error. \
182
+ Full response: \n \n { data } "
183
+ )
174
184
175
- headers = str (r .headers ).replace (r'\n' , '' ).replace (
176
- '\n ' , '' ).replace (r'\\' , '' ).replace (r"\'" , '' )[15 :- 1 ]
185
+ headers = (
186
+ str (r .headers )
187
+ .replace (r"\n" , "" )
188
+ .replace ("\n " , "" )
189
+ .replace (r"\\" , "" )
190
+ .replace (r"\'" , "" )[15 :- 1 ]
191
+ )
177
192
178
193
returns .append (data )
179
194
if return_headers :
180
195
returns .append (headers )
181
196
182
197
if auth_token :
183
198
returns .append (
184
- {"Token-Valid" : bool (int (re .split (r"Token-Valid" , headers )[1 ][4 ]))})
199
+ {"Token-Valid" : bool (int (re .split (r"Token-Valid" , headers )[1 ][4 ]))}
200
+ )
185
201
186
202
if len (returns ) > 1 :
187
203
return returns
@@ -200,7 +216,7 @@ def get_joke(
200
216
auth_token = None ,
201
217
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) \
202
218
Gecko/20100101 Firefox/77.0" ,
203
- return_headers = False
219
+ return_headers = False ,
204
220
):
205
221
r = self .build_request (
206
222
category ,
@@ -210,11 +226,12 @@ def get_joke(
210
226
search_string ,
211
227
id_range ,
212
228
amount ,
213
- lang
229
+ lang ,
214
230
)
215
231
216
232
response = self .send_request (
217
- r , response_format , return_headers , auth_token , user_agent )
233
+ r , response_format , return_headers , auth_token , user_agent
234
+ )
218
235
return response
219
236
220
237
def submit_joke (self , category , joke , flags , lang = "en" ):
@@ -226,7 +243,8 @@ def submit_joke(self, category, joke, flags, lang="en"):
226
243
You selected { category } .
227
244
Available categories are:
228
245
{ """
229
- """ .join (self .info ["categories" ])} ''' )
246
+ """ .join (self .info ["categories" ])} '''
247
+ )
230
248
request ["category" ] = category
231
249
232
250
if type (joke ) in [list , tuple ]:
@@ -249,13 +267,14 @@ def submit_joke(self, category, joke, flags, lang="en"):
249
267
Available flags are:
250
268
{ """
251
269
""" .join (self .info ["flags" ])}
252
- ''' )
270
+ '''
271
+ )
253
272
request ["flags" ] = flags
254
273
request ["lang" ] = lang
255
274
256
275
data = str (request ).replace ("'" , '"' )
257
276
data = data .replace (": True" , ": true" ).replace (": False" , ": false" )
258
- data = data .encode (' ascii' )
277
+ data = data .encode (" ascii" )
259
278
url = "https://sv443.net/jokeapi/v2/submit"
260
279
261
280
try :
0 commit comments