87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
import os
|
|
from flask import Flask, request
|
|
import mysql.connector
|
|
import logging
|
|
import json
|
|
|
|
logging.basicConfig(
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def connect_db():
|
|
db = mysql.connector.connect(
|
|
host = os.environ.get("MYSQL_HOST"),
|
|
user = os.environ.get("MYSQL_USER"),
|
|
password = os.environ.get("MYSQL_PASSWORD"),
|
|
database = os.environ.get("MYSQL_DATABASE")
|
|
)
|
|
return db
|
|
|
|
def populate_db():
|
|
con = connect_db()
|
|
cur = con.cursor(prepared=True)
|
|
cur.execute('CREATE TABLE IF NOT EXISTS messages (id INT AUTO_INCREMENT PRIMARY KEY, user VARCHAR(255), message VARCHAR(255), audio BOOLEAN, processed BOOLEAN)')
|
|
con.commit()
|
|
con.close()
|
|
|
|
def query_messages():
|
|
con = connect_db()
|
|
cur = con.cursor(prepared=True)
|
|
cur.execute('SELECT id, user, message, audio FROM messages WHERE processed IS false LIMIT 1')
|
|
ret = cur.fetchall()
|
|
con.close()
|
|
return ret
|
|
|
|
def insert_message(user, message, audio):
|
|
con = connect_db()
|
|
cur = con.cursor(prepared=True)
|
|
params = (user, message, audio)
|
|
cur.execute('INSERT INTO messages (user, message, audio, processed) VALUES (%s, %s, %s, 0)', params)
|
|
con.commit()
|
|
con.close()
|
|
|
|
def update_message(id):
|
|
con = connect_db()
|
|
cur = con.cursor(prepared=True)
|
|
cur.execute(f'UPDATE messages SET processed = true WHERE id = {id}')
|
|
con.commit()
|
|
con.close()
|
|
|
|
server = Flask(__name__)
|
|
|
|
@server.route('/getmessage')
|
|
def getmessage():
|
|
rec = query_messages()
|
|
|
|
try:
|
|
id = rec[0][0]
|
|
user = rec[0][1]
|
|
message = rec[0][2]
|
|
audio = rec[0][3]
|
|
update_message(id)
|
|
response = {"user": user,
|
|
"message": message,
|
|
"audio": audio}
|
|
return json.dumps(response)
|
|
except Exception as e:
|
|
logging.info(f"Error: {e}")
|
|
return ''
|
|
|
|
@server.route('/sendmessage', methods=['GET'])
|
|
def sendmessage():
|
|
user = request.args.get('user')
|
|
message = request.args.get('message')
|
|
audio = request.args.get('audio')
|
|
|
|
try:
|
|
insert_message(user, message, audio)
|
|
return f"Inserted {user} - {message} - {audio}"
|
|
except Exception as e:
|
|
logging.info(f"Error: {e}")
|
|
return ''
|
|
|
|
if __name__ == '__main__':
|
|
server.run() |