generated from mwc/lab_riddles
I tried and I dont think this works.
1. When you connect to a 3-d printer each device musut send a GET and POST requests 200 will verify that you are connected and these are connected to each other. 2. I find this extremely interesting yet complicated. I was able to use my understanding of a status codes to understand a website was down that we were trying to use in school.
This commit is contained in:
parent
0c8f749f78
commit
352eef9af7
106
api.py
106
api.py
|
@ -16,36 +16,114 @@ class RiddleAPI:
|
||||||
|
|
||||||
def get_all_riddles(self):
|
def get_all_riddles(self):
|
||||||
"Fetches all the riddles from the server"
|
"Fetches all the riddles from the server"
|
||||||
route = "/all"
|
response = requests.get(self.server_url + "/all")
|
||||||
response = requests.get(self.server_url + route)
|
|
||||||
if response.ok:
|
if response.ok:
|
||||||
return response.json()['riddles']
|
return response.json()['riddles']
|
||||||
else:
|
else:
|
||||||
raise APIError(response.json()['errors'])
|
raise APIError(response.json().get('errors', 'Unknown error'))
|
||||||
|
|
||||||
def guess_riddle(self, riddle_id, guess):
|
def guess_riddle(self, riddle_id, guess):
|
||||||
"Submits a guess to the server. Returns True or False"
|
"Submits a guess to the server. Returns True or False"
|
||||||
route = "/guess"
|
|
||||||
params = {'id': riddle_id, 'answer': guess}
|
params = {'id': riddle_id, 'answer': guess}
|
||||||
response = requests.post(self.server_url + route, json=params)
|
response = requests.post(self.server_url + "/guess", json=params)
|
||||||
if response.ok:
|
if response.ok:
|
||||||
return response.json()
|
return response.json()['correct']
|
||||||
else:
|
else:
|
||||||
raise APIError(response.json()['errors'])
|
raise APIError(response.json().get('errors', 'Unknown error'))
|
||||||
|
|
||||||
def get_riddle(self, riddle_id):
|
def get_riddle(self, riddle_id):
|
||||||
"Fetches a single riddle from the server"
|
"Fetches a single riddle from the server"
|
||||||
route = "/show"
|
response = requests.get(self.server_url + "/show/{}".format(riddle_id))
|
||||||
raise NotImplementedError("The API doesn't support `get_riddle` yet. Can you add it?")
|
if response.ok:
|
||||||
|
return response.json()
|
||||||
|
else:
|
||||||
|
raise APIError(response.json().get('errors', 'Unknown error'))
|
||||||
|
|
||||||
def get_random_riddle(self):
|
def get_random_riddle(self):
|
||||||
"Fetches all riddles from the server and then randomly returns one"
|
"Fetches a random riddle from the server"
|
||||||
raise NotImplementedError("The API doesn't support `get_random_riddle` yet. Can you add it?")
|
riddles = self.get_all_riddles()
|
||||||
|
if riddles:
|
||||||
|
return choice(riddles)
|
||||||
|
else:
|
||||||
|
raise APIError("No riddles available")
|
||||||
|
|
||||||
def add_riddle(self, question, answer):
|
def add_riddle(self, question, answer):
|
||||||
"Adds a new riddle to the server"
|
"Adds a new riddle to the server"
|
||||||
route = "/new"
|
data = {'question': question, 'answer': answer}
|
||||||
raise NotImplementedError("The API doesn't support `add_riddle` yet. Can you add it?")
|
response = requests.post(self.server_url + "/new", json=data)
|
||||||
|
if response.ok:
|
||||||
|
return response.json()
|
||||||
|
else:
|
||||||
|
raise APIError(response.json().get('errors', 'Unknown error'))
|
||||||
|
|
||||||
|
class RiddleView:
|
||||||
|
"Allows a player to interact with the Riddle Server from the Terminal"
|
||||||
|
def __init__(self, url):
|
||||||
|
self.api = RiddleAPI(url)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
print("Welcome to the Riddler")
|
||||||
|
print("Press control + c to quit")
|
||||||
|
print("-" * 80)
|
||||||
|
self.show_menu()
|
||||||
|
|
||||||
|
def show_menu(self):
|
||||||
|
choices = [
|
||||||
|
"Show riddles",
|
||||||
|
"Random riddle",
|
||||||
|
"Add a riddle"
|
||||||
|
]
|
||||||
|
choice = self.get_choice("What do you want to do?", choices)
|
||||||
|
if choice == 0:
|
||||||
|
self.list_riddles()
|
||||||
|
elif choice == 1:
|
||||||
|
riddle = self.api.get_random_riddle()
|
||||||
|
self.ask_riddle(riddle['id'])
|
||||||
|
elif choice == 2:
|
||||||
|
self.add_riddle()
|
||||||
|
|
||||||
|
def list_riddles(self):
|
||||||
|
riddles = self.api.get_all_riddles()
|
||||||
|
if len(riddles) == 0:
|
||||||
|
print("Sorry, there are no riddles on the server!")
|
||||||
|
self.show_menu()
|
||||||
|
else:
|
||||||
|
choices = [riddle['question'] for riddle in riddles]
|
||||||
|
choice = self.get_choice("Which riddle do you want to guess?", choices)
|
||||||
|
riddle_id = riddles[choice]['id']
|
||||||
|
self.ask_riddle(riddle_id)
|
||||||
|
|
||||||
|
def ask_riddle(self, riddle_id):
|
||||||
|
riddle = self.api.get_riddle(riddle_id)
|
||||||
|
print(riddle['question'])
|
||||||
|
guess = input("> ")
|
||||||
|
correct = self.api.guess_riddle(riddle_id, guess)
|
||||||
|
if correct:
|
||||||
|
print("Yes!")
|
||||||
|
else:
|
||||||
|
print("Nope, that's not the answer.")
|
||||||
|
self.show_menu()
|
||||||
|
|
||||||
|
def add_riddle(self):
|
||||||
|
question = input("question: ")
|
||||||
|
answer = input("answer: ")
|
||||||
|
choices = ["Add it!", "Edit", "Never mind"]
|
||||||
|
choice = self.get_choice(question + " " + answer, choices)
|
||||||
|
if choice == 0:
|
||||||
|
self.api.add_riddle(question, answer)
|
||||||
|
self.show_menu()
|
||||||
|
elif choice == 1:
|
||||||
|
self.add_riddle()
|
||||||
|
elif choice == 2:
|
||||||
|
self.show_menu()
|
||||||
|
|
||||||
|
def get_choice(self, prompt, choices):
|
||||||
|
print(prompt)
|
||||||
|
for i, choice in enumerate(choices):
|
||||||
|
print("{}. {}".format(i, choice))
|
||||||
|
while True:
|
||||||
|
selection =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
4
notes.md
4
notes.md
|
@ -21,3 +21,7 @@ Lne 23: Thats the beginning of the content in a dictionary or tuple I think.
|
||||||
The goal of this checkpoint is to see what status codes you can get back from
|
The goal of this checkpoint is to see what status codes you can get back from
|
||||||
the riddle server. Paste below several `http` requests and the status codes
|
the riddle server. Paste below several `http` requests and the status codes
|
||||||
they return.
|
they return.
|
||||||
|
|
||||||
|
200 returns when youre connected to the server
|
||||||
|
|
||||||
|
400 returns when you miss something in the post
|
Loading…
Reference in New Issue