made api runable

This commit is contained in:
Askill 2024-08-15 18:36:08 +02:00
parent 2f85661a8b
commit 3f756292b2
3 changed files with 10 additions and 10 deletions

View File

@ -1,14 +1,14 @@
from flask_restful import Resource from flask_restful import Resource
from flask import session, Response, request from flask import session, Response, request, make_response, jsonify
import uuid import uuid
from src.services import BasketService from services.BasketService import BasketService
# API has not been tested
class Basket(Resource): class Basket(Resource):
basket_service = BasketService() basket_service = BasketService()
def get_session_id(): def get_session_id(self):
# first interaction with server sets session_id # first interaction with server sets session_id
# would need to research if this is ideal # would need to research if this is ideal
return str(uuid.uuid4()) return str(uuid.uuid4())
@ -16,10 +16,8 @@ class Basket(Resource):
def get(self): def get(self):
if "session_id" not in session: if "session_id" not in session:
session["session_id"] = self.get_session_id() session["session_id"] = self.get_session_id()
return Response( total = self.basket_service.total(session["session_id"])
{"total": self.basket_service.total()}, mimetype="application/json" return make_response(jsonify({'total': total}), 200)
)
def post(self): def post(self):
# expects something similar: {"items": [{"item_id": abc002}]} # expects something similar: {"items": [{"item_id": abc002}]}
@ -28,4 +26,4 @@ class Basket(Resource):
jsonData = request.get_json(force=True) jsonData = request.get_json(force=True)
for entry in jsonData["items"]: for entry in jsonData["items"]:
self.basket_service.scan(entry["item_id"]) self.basket_service.scan(entry["item_id"])
return Response(HTTPStatus=201) return make_response(201)

View File

@ -10,7 +10,7 @@ app = Flask(__name__)
app.secret_key = "SUPER_DUPER_BAD_SECRET_KEY" app.secret_key = "SUPER_DUPER_BAD_SECRET_KEY"
api = Api(app) api = Api(app)
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
api.add_resource(BasketEndpoint.Basket, "/api/v1/basket/") api.add_resource(BasketEndpoint.Basket, "/api/v1/basket/", "/api/v1/basket")
@app.route("/") @app.route("/")

View File

@ -21,6 +21,8 @@ class BasketService:
# but could be considered unfriendly towards consumers # but could be considered unfriendly towards consumers
def _round_up(val: float): def _round_up(val: float):
return math.ceil(val * 100) / 100 return math.ceil(val * 100) / 100
if sessionID not in self.baskets:
return 0
items = self.baskets[sessionID] items = self.baskets[sessionID]
prices = self.dealsService.get_items_with_final_prices(items) prices = self.dealsService.get_items_with_final_prices(items)
return _round_up(sum([item.price for item in prices])) return _round_up(sum([item.price for item in prices]))