Example #1
0
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"
Example #2
0
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