Files
lab_riddles/api.py
juddin22 79561be8e3 I wrote the answers to both checkpoints and fixed the codes in api.py to implement client.py.
1. I use Google almost every day, especially for searching things quickly.
When I type something into the search bar and press enter, my device
sends an HTTP request to Google’s servers with my search words.
Google then sends back an HTTP response with the search results,
which show up on my screen.
2. Yes, this lab helped me understand that my devices are constantly
communicating with servers without me even noticing.
2026-02-14 17:43:32 -05:00

67 lines
2.1 KiB
Python

# RiddleAPI
# ---------
# By Chris Proctor
# The Riddle API takes care of connecting to the server.
import requests
from random import choice
class APIError(Exception):
"A custom error we'll use when something goes wrong with the API"
class RiddleAPI:
"Provides an easy way for Python programs to interact with a Riddle Server"
def __init__(self, server_url):
self.server_url = server_url
def get_all_riddles(self):
"Fetches all the riddles from the server"
route = "/all"
response = requests.get(self.server_url + route)
if response.ok:
return response.json()['riddles']
else:
raise APIError(response.json()['errors'])
def guess_riddle(self, riddle_id, guess):
"Submits a guess to the server. Returns True or False"
route = "/guess"
params = {'id': riddle_id, 'answer': guess}
response = requests.post(self.server_url + route, json=params)
if response.ok:
return response.json()
else:
raise APIError(response.json()['errors'])
def get_riddle(self, riddle_id):
"Fetches a single riddle from the server"
route = "/show"
params = {'id': riddle_id}
response = requests.post(self.server_url + route, json=params)
if response.ok:
return response.json()
else:
raise APIError(response.json()['errors'])
def get_random_riddle(self):
"Fetches all riddles from the server and then randomly returns one"
route = "/all"
response = requests.get(self.server_url + route)
if response.ok:
riddles=response.json()['riddles']
return choice(riddles)
else:
raise APIError(response.json()['errors'])
def add_riddle(self, question, answer):
"Adds a new riddle to the server"
route = "/new"
params = {'question': question, 'answer': answer}
response = requests.post(self.server_url + route, json=params)
if response.ok:
return response.json()
else:
raise APIError(response.json()['errors'])