diff --git a/Lab2/__pycache__/database_helper.cpython-311.pyc b/Lab2/__pycache__/database_helper.cpython-311.pyc index 100e86dddec4b61d24a4b59b06594d316c8cdfae..9983477b93d10c0b2dd52a7824e60133085b0d1b 100644 Binary files a/Lab2/__pycache__/database_helper.cpython-311.pyc and b/Lab2/__pycache__/database_helper.cpython-311.pyc differ diff --git a/Lab2/database.db b/Lab2/database.db index 200ab061884f9664250abd85b76ba217a03f11f5..879c356c93d13a5af64b630499fc883bd6de459a 100644 Binary files a/Lab2/database.db and b/Lab2/database.db differ diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py index 0cac71e6f95fea1b8da016bc6cba0ebf759ccd3e..99a97b0efc89df57dd6c42758d5709790a9c2faf 100644 --- a/Lab2/database_helper.py +++ b/Lab2/database_helper.py @@ -10,16 +10,6 @@ def get_db(): return db -def create_database(): - conn = sqlite3.connect('database.db') - cursor = conn.cursor() - with open('schema.sql', 'r') as file: - sql = file.read() - cursor.executescript(sql) - conn.commit() - conn.close() - - def clean_db(): try: get_db().execute("DROP table USERS;") @@ -113,6 +103,7 @@ def get_data_email(email): return None + def change_password(email, newpassword): try: sql = "UPDATE USERS SET password = 'newpassword1' WHERE email = 'cbdgsdsd11mail.com';" @@ -121,3 +112,17 @@ def change_password(email, newpassword): return True except: return False + +def check_email_exists(email): + cursor = get_db().cursor() + cursor.execute("SELECT email FROM USERS WHERE email=?", (email,)) + result = cursor.fetchone() + return True if result else False + +def postMessage(email_sender, email_recipient, message): + try: + get_db().execute("INSERT into MESSAGES (EMAIL_RECIPIENT, EMAIL_SENDER, MESSAGE) values(?, ?, ?)", [email_recipient, email_sender, message]) + get_db().commit() + return True + except: + return False \ No newline at end of file diff --git a/Lab2/schema.sql b/Lab2/schema.sql index 446b1f8eb630a2eba367730215e1fc1978be035c..3ad2fecf000595858432d2798aba367755d00288 100644 --- a/Lab2/schema.sql +++ b/Lab2/schema.sql @@ -13,4 +13,12 @@ CREATE TABLE LOGGEDINUSERS( TOKEN VARCHAR(40) NOT NULL, EMAIL VARCHAR(30) NOT NULL, PRIMARY KEY (EMAIl) -) +); + +CREATE TABLE MESSAGES( + id INTEGER, + EMAIL_RECIPIENT VARCHAR(30) NOT NULL, --Celui qui reçoit le message + EMAIL_SENDER VARCHAR(30) NOT NULL, --Celui qui envoie le mail + MESSAGE TEXT NOT NULL, + PRIMARY KEY(id AUTOINCREMENT) +); \ No newline at end of file diff --git a/Lab2/server.py b/Lab2/server.py index c718b1cb0a006bee6575af1ba45b4889d9d4fc67..28abb6e10f0b47268d50aaa3e184799c5fdf957b 100644 --- a/Lab2/server.py +++ b/Lab2/server.py @@ -6,7 +6,6 @@ import string app = Flask(__name__) -#database_helper.create_database() @app.route("/", methods = ['GET']) @@ -121,6 +120,28 @@ def get_user_data_email(token, email): else: return "", 401 +@app.route("/account/post_message", methods = ['POST']) +def post_message(): + data = request.get_json() + if('token' in data + and 'message' in data + and 'email_recipient' in data): + email_sender = database_helper.tokenToEmail(data['token']) + if email_sender: + if database_helper.check_email_exists(data['email_recipient']): + posted = database_helper.postMessage(email_sender, data['email_recipient'], data['message']) + if posted: + return "", 201 + else: + return "", 409 + else: + return "", 404 + else: + return "", 404 + else: + return "", 401 + + def generate_token(): characters = string.ascii_letters + string.digits return ''.join(random.choices(characters, k=36))