Skip to content

Commit 5eff52a

Browse files
committed
Adding auth headers and user-agent. Auth headers are currently broken.
1 parent c78ed34 commit 5eff52a

File tree

3 files changed

+69
-38
lines changed

3 files changed

+69
-38
lines changed

jokeapi/main.py

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ def build_request(
3737
if len(blacklist) > 0:
3838
for b in blacklist:
3939
if b not in [
40-
"nsfw",
41-
"religious",
42-
"political",
43-
"racist",
44-
"sexist"
45-
]:
40+
"nsfw",
41+
"religious",
42+
"political",
43+
"racist",
44+
"sexist"
45+
]:
4646
raise ValueError(
4747
'''\n\n
4848
You have blacklisted flags which are not available.
@@ -82,21 +82,21 @@ def build_request(
8282
if id_range:
8383

8484
response = self.http.request(
85-
'GET',
86-
"https://sv443.net/jokeapi/v2/info"
87-
)
85+
'GET',
86+
"https://sv443.net/jokeapi/v2/info"
87+
)
8888
dict = json.loads(response.data)
8989
range_limit = dict["jokes"]["totalCount"]
9090

9191
if len(id_range) > 2:
9292
raise ValueError("id_range must be no longer than 2 items.")
9393
elif id_range[0] < 0:
9494
raise ValueError(
95-
"id_range[0] must be greater than or equal to 0."
96-
)
95+
"id_range[0] must be greater than or equal to 0."
96+
)
9797
elif id_range[1] > range_limit:
9898
raise ValueError(
99-
f"id_range[1] must be less than or equal to {range_limit-1}."
99+
f"id_range[1] must be less than or equal to {range_limit-1}."
100100
)
101101

102102
r += cats
@@ -130,15 +130,27 @@ def build_request(
130130

131131
return r
132132

133-
def send_request(self, request, response_format):
134-
r = self.http.request('GET', request)
133+
def send_request(self, request, response_format, return_headers, auth_token, user_agent):
134+
if auth_token:
135+
r = self.http.request('GET', request, headers={'Authorization': str(
136+
auth_token), 'user-agent': str(user_agent)})
137+
else:
138+
r = self.http.request('GET', request, headers={'user-agent': str(user_agent)})
135139

136-
if response_format == "json":
137-
return json.loads(r.data)
138-
elif response_format == "xml":
139-
return r.data
140+
if return_headers:
141+
if response_format == "json":
142+
return r.data, r.headers
143+
elif response_format == "xml":
144+
return r.data, r.headers
145+
else:
146+
return r.data, r.headers
140147
else:
141-
return r.data
148+
if response_format == "json":
149+
return r.data
150+
elif response_format == "xml":
151+
return r.data
152+
else:
153+
return r.data
142154

143155
def get_joke(
144156
self,
@@ -148,9 +160,13 @@ def get_joke(
148160
type=None,
149161
search_string=None,
150162
id_range=None,
163+
auth_token=None,
164+
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0",
165+
return_headers=False
151166
):
152167
r = self.build_request(
153168
category, blacklist, response_format, type, search_string, id_range
154169
)
155-
response = self.send_request(r, response_format)
170+
171+
response = self.send_request(r, response_format, return_headers, auth_token, user_agent)
156172
return response

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
setuptools.setup(
77
name="jokeapi",
88
packages=["jokeapi"],
9-
version="0.1.4",
9+
version="0.2.1",
1010
license="GNU General Public License v3 (GPLv3)",
1111
description="An API Wrapper for Sv443's JokeAPI",
1212
long_description=long_description,
1313
long_description_content_type="text/markdown",
1414
author="thenamesweretakenalready",
1515
author_email="[email protected]",
1616
url="""https://github.com/thenamesweretakenalready/Sv443s-JokeAPI-Python-Wrapper""",
17-
download_url="https://github.com/user/Sv443s-JokeAPI-Python-Wrapper/archive/v0.1.4.tar.gz",
18-
keywords=["api wrapper", "wrapper", "api", "jokes"],
17+
download_url="https://github.com/user/Sv443s-JokeAPI-Python-Wrapper/archive/v0.1.5.tar.gz",
18+
keywords=["api wrapper", "wrapper", "api", "jokes", "python", "joke api"],
1919
install_requires=setuptools.find_packages(),
2020
classifiers=[
2121
"Development Status :: 3 - Alpha",

test_main.py

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,99 @@
1+
from os import getenv
12
from jokeapi import Jokes
3+
from dotenv import load_dotenv
4+
load_dotenv()
25

36
j = Jokes()
47
errors = []
8+
token = getenv("token")
9+
510

611
try:
712
j.get_joke()
813
except Exception as e:
914
errors.append({'Error in': 'blank joke get', 'Error': e})
1015

16+
"""Testing auth tokens"""
17+
try:
18+
j.get_joke(auth_token=token)
19+
except Exception as e:
20+
auth_token = None
21+
errors.append({'Error in': 'auth usage', 'Error': e})
22+
1123
"""Testing for errors in categories"""
1224
try:
13-
j.get_joke(category=["programming"])
25+
j.get_joke(category=["programming"], auth_token=token)
1426
except Exception as e:
1527
errors.append({'Error in': 'category programming', 'Error': e})
1628
try:
17-
j.get_joke(category=["miscellaneous"])
29+
j.get_joke(category=["miscellaneous"], auth_token=token)
1830
except Exception as e:
1931
errors.append({'Error in': 'category miscellaneous', 'Error': e})
2032
try:
21-
j.get_joke(category=["dark"])
33+
j.get_joke(category=["dark"], auth_token=token)
2234
except Exception as e:
2335
errors.append({'Error in': 'category dark', 'Error': e})
2436

2537
"""Testing for errors in blacklist"""
2638
try:
27-
j.get_joke(blacklist=["nsfw"])
39+
j.get_joke(blacklist=["nsfw"], auth_token=token)
2840
except Exception as e:
2941
errors.append({'Error in': 'blacklist nsfw', 'Error': e})
3042
try:
31-
j.get_joke(blacklist=["religious"])
43+
j.get_joke(blacklist=["religious"], auth_token=token)
3244
except Exception as e:
3345
errors.append({'Error in': 'blacklist religious', 'Error': e})
3446
try:
35-
j.get_joke(blacklist=["political"])
47+
j.get_joke(blacklist=["political"], auth_token=token)
3648
except Exception as e:
3749
errors.append({'Error in': 'blacklist political', 'Error': e})
3850
try:
39-
j.get_joke(blacklist=["racist"])
51+
j.get_joke(blacklist=["racist"], auth_token=token)
4052
except Exception as e:
4153
errors.append({'Error in': 'blacklist political', 'Error': e})
4254
try:
43-
j.get_joke(blacklist=["sexist"])
55+
j.get_joke(blacklist=["sexist"], auth_token=token)
4456
except Exception as e:
4557
errors.append({'Error in': 'blacklist sexist', 'Error': e})
4658

4759
"""Testing for errors in response_format"""
4860
try:
49-
j.get_joke(response_format="xml")
61+
j.get_joke(response_format="xml", auth_token=token)
5062
except Exception as e:
5163
errors.append({'Error in': 'response_format xml', 'Error': e})
5264
try:
53-
j.get_joke(response_format="yaml")
65+
j.get_joke(response_format="yaml", auth_token=token)
5466
except Exception as e:
5567
errors.append({'Error in': 'response_format yaml', 'Error': e})
5668

5769
"""Testing for errors in type"""
5870
try:
59-
j.get_joke(type="single")
71+
j.get_joke(type="single", auth_token=token)
6072
except Exception as e:
6173
errors.append({'Error in': 'type single', 'Error': e})
6274
try:
63-
j.get_joke(type="twopart")
75+
j.get_joke(type="twopart", auth_token=token)
6476
except Exception as e:
6577
errors.append({'Error in': 'type double', 'Error': e})
6678

6779
"""Testing for errors in search_string"""
6880
try:
69-
j.get_joke(search_string="search")
81+
j.get_joke(search_string="search", auth_token=token)
7082
# as long as this gets a response, the api wrapper is fine;
7183
# it probably doesn't exist in a joke.
7284
except Exception as e:
7385
errors.append({'Error in': 'search_string', 'Error': e})
7486

7587
"""Testing for errors in id_range"""
7688
try:
77-
j.get_joke(id_range=[30, 151])
89+
j.get_joke(id_range=[30, 151], auth_token=token)
7890
except Exception as e:
7991
errors.append({'Error in': 'id_range', 'Error': e})
8092

8193
if len(errors):
8294
for e in errors:
8395
print(f"Error in: {e['Error in']}\nError: {e['Error']}")
84-
raise Exception("Errors boii")
96+
if len(errors) == 1:
97+
raise Exception("1 error occured")
98+
99+
raise Exception(f"{len(errors)} errors occurred")

0 commit comments

Comments
 (0)