generated from mwc/lab_riddles
Initial commit
This commit is contained in:
52
api.py
Normal file
52
api.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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"
|
||||
raise NotImplementedError("The API doesn't support `get_riddle` yet. Can you add it?")
|
||||
|
||||
def get_random_riddle(self):
|
||||
"Fetches all riddles from the server and then randomly returns one"
|
||||
raise NotImplementedError("The API doesn't support `get_random_riddle` yet. Can you add it?")
|
||||
|
||||
def add_riddle(self, question, answer):
|
||||
"Adds a new riddle to the server"
|
||||
route = "/new"
|
||||
raise NotImplementedError("The API doesn't support `add_riddle` yet. Can you add it?")
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user