def config(app): """ /api/user app (Flask): the flask object. provider (provider): provider.py module """ base = "/api/cart" books = provider.request("MongoService").get_collection("books") redis = provider.request("RedisService") @app.route(base, methods=["GET"]) @require_auth def getCart(): cartKey = getCartKey() items = json.loads(redis.get(cartKey)) ids = [ObjectId(item["id"]) for item in items] docs = [] for doc in books.find({"_id": {"$in": ids}}): doc = normalize_id(doc) qty = [item["qty"] for item in items if item["id"] == doc["id"]][0] docs.append({"book": doc, "qty": qty}) return json.dumps(docs) @app.route(base, methods=["POST"]) @require_auth def updateCart(): cartKey = getCartKey() data = request.data.replace("\n", "") redis.set(cartKey, data) return "" def getCartKey(): email = session["user_info"]["email"] return "user:"******":cart"
def config(app): """ /api/book app (Flask): the flask object. provider (provider): provider.py module """ base = "/api/category" db = provider.request("MongoService") categories = db.get_collection("categories") books = db.get_collection("books") limit = 24 @app.route(base + "/<string:category_id>", methods=["GET"]) def category_get(category_id): category_id = category_id.replace("%20", " ") doc = books.find_one({"_id": category_id}) doc = normalize_id(doc) return json_util.dumps(doc), 200 @app.route(base + "/<string:category_id>/pages/<int:page_num>", methods=["GET"]) def category_get_page(category_id, page_num): category_id = category_id.replace("%20", " ") skip = page_num * limit query = {"category.ancestors": category_id} projection = {"name": 1, "pictures": 1} docs = [] for doc in books.find(query, projection).skip(skip).limit(limit): doc = normalize_id(doc) docs.append(doc) return json_util.dumps(docs), 200