diff --git a/handler.py b/handler.py index 3a1b396..33652b1 100644 --- a/handler.py +++ b/handler.py @@ -5,7 +5,8 @@ # 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/. -from bottle import Bottle, route +import json +from bottle import Bottle, route, response, request from config import directory import templates.plain.main as template_public @@ -13,6 +14,14 @@ import modules.public.home as public_home app = Bottle() +data = { + "foods": [ + "Pizza", + "Burger", + "Pasta", + ] +} + @app.route('/') def index(): params = { @@ -22,6 +31,50 @@ def index(): } return public_home.main().html(params) -@app.route('/api/') +@app.route('/api/', methods=['GET', 'POST', 'PUT', 'DELETE']) def index(crud): - return f'api {crud}' \ No newline at end of file + 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"] + 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() \ No newline at end of file