diff --git a/ShyBadger/src/endpoints/BasketEndpoint.py b/ShyBadger/src/endpoints/BasketEndpoint.py index e6a78ca..03222c6 100644 --- a/ShyBadger/src/endpoints/BasketEndpoint.py +++ b/ShyBadger/src/endpoints/BasketEndpoint.py @@ -1,14 +1,14 @@ from flask_restful import Resource -from flask import session, Response, request +from flask import session, Response, request, make_response, jsonify import uuid -from src.services import BasketService - +from services.BasketService import BasketService +# API has not been tested class Basket(Resource): basket_service = BasketService() - def get_session_id(): + def get_session_id(self): # first interaction with server sets session_id # would need to research if this is ideal return str(uuid.uuid4()) @@ -16,10 +16,8 @@ class Basket(Resource): def get(self): if "session_id" not in session: session["session_id"] = self.get_session_id() - return Response( - {"total": self.basket_service.total()}, mimetype="application/json" - ) - + total = self.basket_service.total(session["session_id"]) + return make_response(jsonify({'total': total}), 200) def post(self): # expects something similar: {"items": [{"item_id": abc002}]} @@ -28,4 +26,4 @@ class Basket(Resource): jsonData = request.get_json(force=True) for entry in jsonData["items"]: self.basket_service.scan(entry["item_id"]) - return Response(HTTPStatus=201) + return make_response(201) diff --git a/ShyBadger/src/main.py b/ShyBadger/src/main.py index a84bce3..027e79b 100644 --- a/ShyBadger/src/main.py +++ b/ShyBadger/src/main.py @@ -10,7 +10,7 @@ app = Flask(__name__) app.secret_key = "SUPER_DUPER_BAD_SECRET_KEY" api = Api(app) 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("/") diff --git a/ShyBadger/src/services/BasketService.py b/ShyBadger/src/services/BasketService.py index 6171dad..9beb40b 100644 --- a/ShyBadger/src/services/BasketService.py +++ b/ShyBadger/src/services/BasketService.py @@ -21,6 +21,8 @@ class BasketService: # but could be considered unfriendly towards consumers def _round_up(val: float): return math.ceil(val * 100) / 100 + if sessionID not in self.baskets: + return 0 items = self.baskets[sessionID] prices = self.dealsService.get_items_with_final_prices(items) return _round_up(sum([item.price for item in prices]))