# 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/. from bottle import Bottle, route, request, response from config import directory, database import mysql.connector as mariadb import json import templates.plain.main as template_public import modules.public.home as public_home app = Bottle() @app.route('/') def index(): params = { "mako":{ "website" : template_public.main(directory.page["public"], "home") } } return public_home.main().html(params) @app.route('/api/', method=['OPTIONS', 'GET', 'POST', 'PUT', 'DELETE']) def list(crud): # Untuk menentukan tipe konten pada respon, yaitu: JSON response.content_type = 'application/json' # Mengambil request pada body, yaitu berformat JSON params = request.json # Keluaran default keluaran = { "status":"Gagal", "message":"Anda tidak ada otoritas untuk menggunakan endpoint ini", "endpoint":f"/api/{crud}", "data":[] } db_main = mariadb.connect(**database.db_main) cursor = db_main.cursor(dictionary=True) if crud == "create": name = params["name" ] phone = params["phone" ] cursor.execute("INSERT INTO `member` VALUES (DEFAULT, %s, %s) ;" , (name, phone) ) keluaran["status"] = "Berhasil" keluaran["message"] = "Selamat data anda telah ditambah" keluaran["data"] = { "name":name, "phone":phone } elif crud == "read": cursor.execute("SELECT * FROM `member`; ") member_list = cursor.fetchall() keluaran["status"] = "Berhasil" keluaran["message"] = "Data collected" keluaran["data"] = member_list elif crud == "update": key = params["key" ] name = params["name" ] phone = params["phone" ] cursor.execute("UPDATE `member` SET `name` = %s, `phone` = %s WHERE `id` = %s ;" , (name, phone, key) ) keluaran["status"] = "Berhasil" keluaran["message"] = "Belum dibikin" keluaran["data"] = { "key":params["key"], "name":params["name"], "phone":params["phone"] } elif crud == "delete": key = params["key" ] cursor.execute("DELETE FROM `member` WHERE `id` = %s ;" , (key,) ) keluaran["status"] = "Berhasil" keluaran["message"] = "Data sudah terhapus selamanya!" else: pass cursor.close() db_main.close() return json.dumps(keluaran, indent = 2).encode()