Spaces:
Runtime error
Runtime error
phuochungus
commited on
Commit
•
299424a
1
Parent(s):
f6e7a1e
fix qr
Browse files- app/routers/__init__.py +0 -0
- app/routers/friend_request.py +21 -18
app/routers/__init__.py
DELETED
File without changes
|
app/routers/friend_request.py
CHANGED
@@ -1,9 +1,11 @@
|
|
1 |
import datetime
|
|
|
2 |
import cv2
|
|
|
3 |
import qrcode
|
4 |
from fastapi import APIRouter, Depends, HTTPException, Response
|
5 |
from app.dependencies import get_current_user
|
6 |
-
from app import db
|
7 |
from enum import Enum
|
8 |
from app.graphdb.main import insert2PersonAndSetFriend
|
9 |
|
@@ -23,41 +25,42 @@ EXPIRE_MINUTES = 15
|
|
23 |
|
24 |
@router.get("")
|
25 |
def getFriendRequest(user=Depends(get_current_user)):
|
26 |
-
if user
|
27 |
raise HTTPException(status_code=400, detail="User not found")
|
28 |
friend_requests = (
|
29 |
-
db.collection(COLLECTION_NAME).where("inviter", "==", user
|
30 |
)
|
31 |
return {"friend_requests": [Request.to_dict() for Request in friend_requests]}
|
32 |
|
33 |
|
34 |
@router.post("")
|
35 |
def createRequest(user=Depends(get_current_user)):
|
36 |
-
if user
|
37 |
raise HTTPException(status_code=400, detail="User not found")
|
38 |
_, fr_ref = db.collection(COLLECTION_NAME).add(
|
39 |
{
|
40 |
-
"invitor": user
|
41 |
"status": RequestStatus.WAITING_INVITEE.value,
|
42 |
-
"expire_at": datetime.
|
|
|
43 |
}
|
44 |
)
|
45 |
-
qr = qrcode.make(fr_ref.id)
|
46 |
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
50 |
fr_ref.delete()
|
51 |
return Response(content="Failed to encode image", status_code=500)
|
52 |
|
53 |
-
png_bytes = png.tobytes()
|
54 |
-
|
55 |
-
return Response(content=png_bytes, media_type="image/png")
|
56 |
-
|
57 |
|
58 |
@router.patch("/{RequestId}")
|
59 |
def acceptRequest(RequestId: str, user=Depends(get_current_user)):
|
60 |
-
if user
|
61 |
raise HTTPException(status_code=400, detail="User not found")
|
62 |
|
63 |
fr_ref = db.collection(COLLECTION_NAME).document(RequestId)
|
@@ -79,7 +82,7 @@ def acceptRequest(RequestId: str, user=Depends(get_current_user)):
|
|
79 |
|
80 |
if isInviteeEmpty(fr) and not isInviter(user, fr):
|
81 |
fr_ref.update(
|
82 |
-
{"invitee": user
|
83 |
)
|
84 |
sendNotificationToInviter(fr.inviter, user)
|
85 |
return {"status": "OK"}
|
@@ -95,7 +98,7 @@ async def makeFriend(inviteeId: str, inviterId: str):
|
|
95 |
|
96 |
@router.delete("/{RequestId}")
|
97 |
def deleteRequest(RequestId: str, user=Depends(get_current_user)):
|
98 |
-
if user
|
99 |
raise HTTPException(status_code=400, detail="User not found")
|
100 |
|
101 |
Request_ref = db.collection(COLLECTION_NAME).document(RequestId)
|
@@ -116,7 +119,7 @@ def isRequestExpired(request):
|
|
116 |
|
117 |
|
118 |
def isInviter(user, Request):
|
119 |
-
return Request.inviter == user
|
120 |
|
121 |
|
122 |
def isRequestDone(Request):
|
|
|
1 |
import datetime
|
2 |
+
import io
|
3 |
import cv2
|
4 |
+
from fastapi.responses import StreamingResponse
|
5 |
import qrcode
|
6 |
from fastapi import APIRouter, Depends, HTTPException, Response
|
7 |
from app.dependencies import get_current_user
|
8 |
+
from app import db, logger
|
9 |
from enum import Enum
|
10 |
from app.graphdb.main import insert2PersonAndSetFriend
|
11 |
|
|
|
25 |
|
26 |
@router.get("")
|
27 |
def getFriendRequest(user=Depends(get_current_user)):
|
28 |
+
if user["sub"] is None:
|
29 |
raise HTTPException(status_code=400, detail="User not found")
|
30 |
friend_requests = (
|
31 |
+
db.collection(COLLECTION_NAME).where("inviter", "==", user["sub"]).stream()
|
32 |
)
|
33 |
return {"friend_requests": [Request.to_dict() for Request in friend_requests]}
|
34 |
|
35 |
|
36 |
@router.post("")
|
37 |
def createRequest(user=Depends(get_current_user)):
|
38 |
+
if user["sub"] is None:
|
39 |
raise HTTPException(status_code=400, detail="User not found")
|
40 |
_, fr_ref = db.collection(COLLECTION_NAME).add(
|
41 |
{
|
42 |
+
"invitor": user["sub"],
|
43 |
"status": RequestStatus.WAITING_INVITEE.value,
|
44 |
+
"expire_at": datetime.datetime.now()
|
45 |
+
+ datetime.timedelta(minutes=EXPIRE_MINUTES),
|
46 |
}
|
47 |
)
|
|
|
48 |
|
49 |
+
try:
|
50 |
+
qr = qrcode.make(fr_ref.id)
|
51 |
+
buf = io.BytesIO()
|
52 |
+
qr.save(buf)
|
53 |
+
buf.seek(0)
|
54 |
+
return StreamingResponse(buf, media_type="image/png")
|
55 |
+
except Exception as e:
|
56 |
+
logger.error(e)
|
57 |
fr_ref.delete()
|
58 |
return Response(content="Failed to encode image", status_code=500)
|
59 |
|
|
|
|
|
|
|
|
|
60 |
|
61 |
@router.patch("/{RequestId}")
|
62 |
def acceptRequest(RequestId: str, user=Depends(get_current_user)):
|
63 |
+
if user["sub"] is None:
|
64 |
raise HTTPException(status_code=400, detail="User not found")
|
65 |
|
66 |
fr_ref = db.collection(COLLECTION_NAME).document(RequestId)
|
|
|
82 |
|
83 |
if isInviteeEmpty(fr) and not isInviter(user, fr):
|
84 |
fr_ref.update(
|
85 |
+
{"invitee": user["sub"], "status": RequestStatus.WAITING_INVITER.value}
|
86 |
)
|
87 |
sendNotificationToInviter(fr.inviter, user)
|
88 |
return {"status": "OK"}
|
|
|
98 |
|
99 |
@router.delete("/{RequestId}")
|
100 |
def deleteRequest(RequestId: str, user=Depends(get_current_user)):
|
101 |
+
if user["sub"] is None:
|
102 |
raise HTTPException(status_code=400, detail="User not found")
|
103 |
|
104 |
Request_ref = db.collection(COLLECTION_NAME).document(RequestId)
|
|
|
119 |
|
120 |
|
121 |
def isInviter(user, Request):
|
122 |
+
return Request.inviter == user["sub"]
|
123 |
|
124 |
|
125 |
def isRequestDone(Request):
|