From ef2ac8700d980372e149ee2e660977267d66ae1f Mon Sep 17 00:00:00 2001
From: MaximeOLIVA <maxime.oliva@etu.univ-cotedazur.fr>
Date: Tue, 7 Feb 2023 21:59:58 +0100
Subject: [PATCH] get_messages

---
 .../database_helper.cpython-310.pyc           | Bin 3468 -> 3866 bytes
 Lab2/__pycache__/server.cpython-310.pyc       | Bin 3780 -> 4420 bytes
 Lab2/database_helper.py                       |  23 +++++++++--
 Lab2/server.py                                |  39 +++++++++++++++++-
 4 files changed, 57 insertions(+), 5 deletions(-)

diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc
index 2521f7a2f640d7d312631b2237ca65301146cc25..c0cb2b59bf7e62a54d13752438c29730b94473b0 100644
GIT binary patch
delta 521
zcmeB?o+ZbZ&&$ijz`(%Zv+GfE0sllk8OA9SwOd5xQsi40q6AYEQWRSlqJ&ZygBdiH
zHg2iom|VkQ&Q!xR`8}KX<XN0*oJHac3=Auoi})ws<B*-q!6hOg#K6G7#K^_S$H>9R
z!pO$R#>B?R##p2_Ifp}*&4hu0p-Oo2K{loOaE4$8Mlg(INMQ(O&}8zfat?O&adi$+
z@O2Fic64{uQE>Hj^z?}jcJ*^{4N`Cm^7n;F1uKMmxCXgG6$H6Ddj@#A`i0oqTWhiu
zfqYaX!N9;!#Ld9K5XF&}T9TZRn3Gea3KHW06K)`qlYxQZmQZ?XNqlZ<adBdLYH@sO
zZenImF#`ibF&~mgKwe;DEK+A+U`S>Jg%=bvP1fO7nmmV<mzkl4VR9U|7%SMtlOM86
z28OtS14omoh#zDZ*gX)tL0quag2@@F$=UIx#i>Q{sTG;UCB-!$n|T-*7+?X&!pOo{
zqye&*X>uWl#N=?U)r>8ZnYpJi6{${M&aKASxA`153!}_bm_{Z>5k@XhxPwAnkAZ<f
kQ+V<_9v3z>kge*I^?0oqRVHWh%5m~?aB^^PaPhDM02je%QUCw|

delta 278
zcmbOw*CWlB&&$ijz`($;Fz-?FIo^qUGK?(~wOd#jgBdjCHXf<tU}T-#!D=Rv&QQx-
z!{ovc%U;V;!@Pi{hGiimBSWG1<iBi^lP7ViS!l8rfy^nAU|?V<;sz0t3=9mn*b)m0
zQu9(YS&R5VVqjTCkOWIgVoBmH#-hpRI8~HE!c2@@jC_n7j4X^Sj2w(SjBHR?q`|<z
zkjyl>kwaqgWA4?ArIY)4rZH+x-p8ph*@{<~v3|23FAJkg8v_GFF%JU+0~4bNBNt4s
z9s>h|rr_i}K9|XR_{>xk7#J8h7<d?2m^hd?*f}^kI5~JYI63$@csaN^csTeuxOmtB
Dow72?

diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc
index b5132ee498d8e00d6aa1e48821d75a3350b8b256..3af99e8a6819cb2af0635cb1cace0ebe952112d3 100644
GIT binary patch
delta 1219
zcmX>idqjyZpO=@5fq{XcclV>@Ht~skGK^Uhwe{;$7*d#W*rV7}8B;l$8KXE;IkUJ@
zm{VBN8B<t$nNrwN*jpHy8Kbzt;v8^s&J-@NI1gByJB0_To;QULEY1rS=ZA|6qzHn=
z`M}~raPfNK6cMllKUhLEMGR_?c!~sATmURC3Ab1(MH(zF2o{%ti_50SfyITu;_`5D
zg%m}wxG-2;2`;Xjq5=|kiV^`!sKQ;OmZA=lh!RcFNYQLzh!RWXNYTn>D%zZ)oyr+6
zp31pEVj%+~Lkd$c7;EZGPGY>y$TQiBX&$5C=9^5lOpH>S!&wU$8BHdiU^~m`x_KJA
zG$Z56$(uMd8K+LZ!%@m=z`(!|I5~_{mC;~w4W~Kd=gC_*6|`0|`4y=$FfeE`7x6PN
zFcj%CFfiN_PERd~FD*_jicd)_NsLd;P0Y+$Ir$%_zHkNu1H)$y1_lN$CKg66Mi!<b
z)5#88KN<BVTX8$E8Z$636i%+^R;~xJs$}#NlaupH^Gfv7Q%m%7Q;Ule(^K_rO7gQ)
z^X!rtLFodDnHU%tm>C!toIy@71QAB)ZW4pL32G3;Sw$uw)tqnwl-h2I)nh0ITiOaz
zW(Fec7#J9;RPeb^-v;b$yJV2tpw47qV_;xlfx5G}jDdlngkb?=4Z}jlBFhqn1xz)J
z3mI#fYM6@Z^-35PFoU>7dYKHh%;^lZEHz9n46y>WtTn7DjFJpBtSL;A3@OZWm};48
zSQfC<FfU|eWGECbVXa|lW=vs8V+v-dVJbF<n`55B8qAQw7R->s9?YQ0;a3C-zan!`
zFfrX?hla^5w(_FPlGLL5B2XL^X@k6K4I;o%%m#^KJq8AbC?QY?L3I^Ff-*`lIU_YW
z8xrxU6`92)#kbfJ3kp*6Qi?#H)?_PE2bm=dB9uYtgsm(wr!=)VioGZv%(}&xQUs0)
zb1(^tiy~VF28KQc28LoeaH`>A<YQuCWMSlBWMg7uWc$a%!UGXuW??F_oxGTP9cz(2
z0|Ue4C>|L$u+w!X*YHR&>QA1|6UVrG@;4q$MwiJ7ylWZvPCmyg%P2Yd4X+HpH^@ou
zASbb873b$o7UVOK0;TsNQ;-BGF&2Sh9PF4Pm&t*A=3Gt;3=AR+984UHlPB=0iwbiw
X@^Nr6@=0(pa)@%UvN7^7vit)8_Q)N#

delta 644
zcmX@2bVQafpO=@5fq{WxQQo6uAK{67GK@wOwe{;$8B^Jt8KXE-IkGrYm{VBN8B<t$
znNrwN*jpHy8Kbzs;v8^s&J-@NI5$|FJB0_To;QULEY1TK=ZA|6qzHn=dBNgBaB<-j
z5wLhYA6P;(MGR_?c!~sAf*&j{3Ab1(MH(zF02Y^li_50SfyD*E;_`3{6jBty;zB7(
zDatJjQNpS0DJt1aMblGMQ#s;AQaKigE@WV2;7VZ%W&mMLwaK#>uQPH_E@GO;D6m<O
zxt57ha&tdx0VAXFB=)n6E}PG>OEWTRPJYFq$vADY2xlp)J_7?oz~nwoRW=Z-N^){7
zm*nJ2oRW;ilizSE2x>C<6{#{XFlaIt@iQ<m6zNTt<&xmkWGYez@q{ODWEY+s$R#42
z&cMJ>%)!9Gz{SME$i>LQRAe~0g6k)v?&KnF2UY_H28M#k+qsn)4JPyQt>e7Ko|{@+
zoS2?E`2e4cq8Z329S|W0vWcyT8N`+c5l}n-^2ISWPmbZ&WVD>z#=q8OCdf7x1_lNm
zMiIs$H3kNTTO9H6xrv#1@$n&=Vz*e+auSQPi<m%0fDHqwg?PXLBxb|Fz%aR1z(4@x
t=OROp5Xgx|mXnVQm~&V#FffQPa4=2g5LD+C;$q|w<zQiB<Y8p_2LKadjadKy

diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py
index a14e796..f69e47b 100644
--- a/Lab2/database_helper.py
+++ b/Lab2/database_helper.py
@@ -105,14 +105,29 @@ def get_data_email(email):
         cursor.execute("SELECT * FROM USERS WHERE EMAIL=?;", [email])
         result = cursor.fetchone()
         if result:
-            data = []
-            for r in result:
-                data.append(r)
-            return data
+            return result
+        else:
+            return None
+    except:
         return None
+
+
+def get_messages_email(email):
+    try:
+        cursor = get_db().cursor()
+        cursor.execute("SELECT MESSAGE, EMAIL_SENDER FROM MESSAGES WHERE EMAIL_RECIPIENT=?;", [email])
+        result = cursor.fetchall()
+        return result
     except:
         return None
 
+def check_user_exists(email):
+    cursor = get_db().cursor()
+    cursor.execute("SELECT EMAIL FROM USERS WHERE EMAIL=?", [email])
+    email = cursor.fetchone()
+    if email:
+        return True
+    return False
 
 def change_password(email, newpassword):
     try:
diff --git a/Lab2/server.py b/Lab2/server.py
index 471f7d0..d78f754 100644
--- a/Lab2/server.py
+++ b/Lab2/server.py
@@ -3,6 +3,7 @@ from flask import Flask, request, jsonify
 import database_helper
 import random
 import string
+import json
 
 app = Flask(__name__)
 
@@ -95,7 +96,7 @@ def change_password():
             else:
                 return "", 401
         else:
-            return "", 406
+            return "", 405
     else:
         return "", 400
 
@@ -128,6 +129,41 @@ def get_user_data_email(token, email):
     else:
         return "", 401
 
+
+@app.route("/account/get/message/<token>", methods = ['GET'])
+def get_user_message_token(token):
+    email = database_helper.tokenToEmail(token)
+    if email:
+        return get_user_message_email(token, email)
+    else:
+        return "", 401
+
+
+@app.route("/account/get/message/<token>/<email>", methods = ['GET'])
+def get_user_message_email(token, email):
+    if database_helper.is_online(token):
+        data = database_helper.get_messages_email(email)
+        #this user has message(s)
+        if(data and database_helper.check_user_exists(email)):
+            values = {}
+            r_value = []
+            for d in data:
+                values = {
+                    "message": d[0],
+                    "writer": d[1]
+                }
+                r_value.append(values)
+            return jsonify(r_value), 200
+        #this user has no messages
+        elif (not data and database_helper.check_user_exists(email)):
+            return "", 204
+        #this user does not exist
+        else:
+            return "", 404
+    else:
+        return "", 401
+
+
 @app.route("/account/post_message", methods = ['POST'])
 def post_message():
     data = request.get_json()
@@ -154,6 +190,7 @@ def generate_token():
     characters = string.ascii_letters + string.digits
     return ''.join(random.choices(characters, k=36))
 
+
 if __name__ == '__main__':
     app.debug = True
     app.run()
-- 
GitLab