habulaj commited on
Commit
21b7a46
·
verified ·
1 Parent(s): 29c9a6a

Create sendnotifications.py

Browse files
Files changed (1) hide show
  1. routes/sendnotifications.py +54 -0
routes/sendnotifications.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter
2
+ import httpx
3
+ import json
4
+ from google.oauth2 import service_account
5
+ from google.auth.transport.requests import Request
6
+
7
+ router = APIRouter()
8
+
9
+ # Caminho para o arquivo da conta de serviço
10
+ SERVICE_ACCOUNT_FILE = './closetcoach-461319-35bd15d6c289.json'
11
+
12
+ # Token de teste (fixo para agora)
13
+ TEST_DEVICE_TOKEN = 'cnL5SYv0RF-VHoVo8JoAvv:APA91bGeOzUhAicTfoboPXI1immeb4ueR_vBL5Pf1Kky5cltKfvw76EBnh7VDhviyvRn4qhV5IjfZieQKJXe-_kYxi0ZJOJJBrfXdeIwVsLQ-0bi2ElNwds'
14
+
15
+ def get_access_token():
16
+ credentials = service_account.Credentials.from_service_account_file(
17
+ SERVICE_ACCOUNT_FILE
18
+ )
19
+ scoped_credentials = credentials.with_scopes(['https://www.googleapis.com/auth/cloud-platform'])
20
+ scoped_credentials.refresh(Request())
21
+ return credentials.token
22
+
23
+ @router.get("/send-test-notification")
24
+ async def send_test_notification():
25
+ try:
26
+ access_token = get_access_token()
27
+
28
+ headers = {
29
+ 'Authorization': f'Bearer {access_token}',
30
+ 'Content-Type': 'application/json',
31
+ }
32
+
33
+ payload = {
34
+ "message": {
35
+ "notification": {
36
+ "title": "Teste ClosetCoach",
37
+ "body": "Esta é uma notificação de teste 🚀",
38
+ },
39
+ "token": TEST_DEVICE_TOKEN
40
+ }
41
+ }
42
+
43
+ url = "https://fcm.googleapis.com/v1/projects/closetcoach-461319/messages:send"
44
+
45
+ async with httpx.AsyncClient() as client:
46
+ response = await client.post(url, headers=headers, json=payload)
47
+
48
+ return {
49
+ "status_code": response.status_code,
50
+ "response": response.json()
51
+ }
52
+
53
+ except Exception as e:
54
+ return {"error": str(e)}