-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.py
More file actions
26 lines (23 loc) · 995 Bytes
/
api.py
File metadata and controls
26 lines (23 loc) · 995 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import requests
def fetch_posts(limit=5):
"""Fetches posts using limit param to limit responses. Note: Extra client-side filtering done to simulate multiple users."""
payload = {"_limit": limit * 10}
try:
req = requests.get("https://jsonplaceholder.typicode.com/posts", params=payload)
# req = requests.get("https://httpbin.org/status/404", params=payload)
except requests.exceptions.RequestException():
print("Request failed. Please make sure you are connected to the internet and try again later.")
if req.status_code == requests.codes.ok:
posts = []
seen = set()
for item in req.json():
uid = item['userId']
if uid not in seen:
posts.append(item)
seen.add(uid)
if len(posts) >= limit:
break
return posts
else:
print(f"Request error! Please try again later. Error code: {req.status_code}")
return []