made api runable
This commit is contained in:
parent
2f85661a8b
commit
3f756292b2
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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("/")
|
||||||
|
|
|
||||||
|
|
@ -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]))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue