From bf6b09c6391ef0a1e5da713f1b052c1d1e2e9812 Mon Sep 17 00:00:00 2001 From: chompsky Date: Sat, 22 Nov 2025 10:45:13 +0000 Subject: [PATCH] initial commit --- client.py | 2 ++ order.py | 38 ++++++++++++++++++++++++++++++++++++++ pots.py | 33 +++++++++++++++++++++++++++++++++ requirements.txt | 18 ++++++++++++++++++ server.py | 25 +++++++++++++++++++++++++ 5 files changed, 116 insertions(+) create mode 100644 client.py create mode 100644 order.py create mode 100644 pots.py create mode 100644 requirements.txt create mode 100644 server.py diff --git a/client.py b/client.py new file mode 100644 index 0000000..fc75f01 --- /dev/null +++ b/client.py @@ -0,0 +1,2 @@ +import requests + diff --git a/order.py b/order.py new file mode 100644 index 0000000..3e4f268 --- /dev/null +++ b/order.py @@ -0,0 +1,38 @@ +import json + +MILK_TYPES = ["Cream", "Half-and-half", "Whole-milk", "Part-Skim", "Skim", "Non-Dairy"] + +SYRUP_TYPES = ["Vanilla", "Almond", "Raspberry", "Chocolate"] + +ALCOHOL_TYPES = ["Whisky", "Rum", "Kahlua", "Aquavit"] + +ADDITION_HEADER = "Accept-Additions" + + +class Order(object): + + def __init__(self, name): + self.name = name + self.milk = "None" + self.syrup = "None" + self.alcohol = "None" + print(f"Configuring order - {name}") + + def configure(self, header): + additions = [] + for k, v in header.items(): + if ADDITION_HEADER in k: + additions = v + print(additions) + addition_list = additions.split(';') + for ad in addition_list: + print(ad) + if ad.strip() in MILK_TYPES: + self.milk = ad + elif ad.strip() in SYRUP_TYPES: + self.syrup = ad + elif ad.strip() in ALCOHOL_TYPES: + self.alcohol = ad + + def json_dump(self): + return json.dumps([{'name': self.name}, {'milk': self.milk}, {'syrup': self.syrup}, {'alcohol': self.alcohol}]) diff --git a/pots.py b/pots.py new file mode 100644 index 0000000..cf789b3 --- /dev/null +++ b/pots.py @@ -0,0 +1,33 @@ +import logging +import order + +logger = logging.getLogger(__name__) + + +class Pot(object): + + def __init__(self, name): + self.name = name + + def get(self): + return "GET REQUEST RECEIVED" + + def when(self): + return "WHEN REQUEST RECEIVED" + + def brew(self, headers): + return "BREW REQUEST RECEIVED" + +class CoffeePot(Pot): + + def __init__(self, name): + super(CoffeePot, self).__init__(name) + print("Coffee pot initialised") + + def brew(self, headers): + print("Brewing coffee") + new_order = order.Order("NewOrder") + new_order.configure(headers) + print(new_order.json_dump()) + return "Brewing" + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b247ede --- /dev/null +++ b/requirements.txt @@ -0,0 +1,18 @@ +certifi==2025.11.12 +charset-normalizer==3.4.4 +click==8.1.8 +colorama==0.4.6 +Flask==2.2.5 +flask-sqlalchemy==3.0.5 +greenlet==3.1.1 +idna==3.10 +importlib-metadata==6.7.0 +itsdangerous==2.1.2 +jinja2==3.1.6 +MarkupSafe==2.1.5 +requests==2.31.0 +SQLAlchemy==2.0.44 +typing-extensions==4.7.1 +urllib3==2.0.7 +Werkzeug==2.2.3 +zipp==3.15.0 diff --git a/server.py b/server.py new file mode 100644 index 0000000..964cf1b --- /dev/null +++ b/server.py @@ -0,0 +1,25 @@ +from flask import Flask, request +import pots + +app = Flask(__name__) +pot = pots.CoffeePot("TestPot") + + +@app.route('/pot', methods=['GET']) +def get(): + return pot.get() + + +@app.route('/pot', methods=['BREW', 'POST']) +def brew(): + return pot.brew(request.headers) + + +@app.route('/pot', methods=['WHEN']) +def when(): + return pot.when() + + +if __name__ == '__main__': + app.run(port=8081) +