# CostaPy # Copyright (C) 2022 Dita Aji Pratama # # This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/. import json from bottle import Bottle, route, response, request from config import directory import templates.plain.main as template_public import modules.public.home as public_home app = Bottle() data = { "foods": [ "Pizza", "Burger", "Pasta", ] } @app.route('/') def index(): params = { "mako":{ "website" : template_public.main(directory.page["public"], "home") } } return public_home.main().html(params) @app.route('/api/', methods=['GET', 'POST', 'PUT', 'DELETE']) def index(crud): response.content_type = 'application/json' result = { "status": "error", "message": f"API endpoint for /api/{crud} is not implemented yet." } payload = request.json if crud == "create": data["foods"].append(payload["food"]) id = len(data["foods"]) - 1 result["status"] = "success" result["message"] = f'{payload["food"]} is added to the list.' result["data"] = { "id": id, "food": data["foods"][id] } elif crud == "read": result["status"] = "success" result["message"] = "Reading foods." result["data"] = data["foods"] elif crud == "update": food_id = payload["id"] food = payload["food"] if len(data["foods"]) <= food_id: result["status"] = "error" result["message"] = f"{food_id} does not exist." return json.dumps(result, indent = 2).encode() data["foods"][food_id] = food result["status"] = "success" result["message"] = f'{food} is updated.' result["data"] = { "food": data["foods"][food_id] } elif crud == "delete": food_id = payload["id"] food = data["foods"].pop(food_id) result["status"] = "success" result["message"] = f'{food} is deleted' result["data"] = { "food": food } return json.dumps(result, indent = 2).encode()