Moibe commited on
Commit
be3f751
·
1 Parent(s): 58e9d96

Welcome Firewhale

Browse files
Files changed (3) hide show
  1. .gitignore +3 -1
  2. fireWhale.py +126 -0
  3. requirements.txt +0 -0
.gitignore CHANGED
@@ -1,4 +1,6 @@
1
  /venv/
2
  /__pycache__/
3
  stripe.exe
4
- bridges.py
 
 
 
1
  /venv/
2
  /__pycache__/
3
  stripe.exe
4
+ bridges.py
5
+ config.json
6
+ config.js
fireWhale.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import firebase_admin
2
+ from firebase_admin import credentials
3
+ from firebase_admin import firestore
4
+ import time
5
+
6
+ from firebase_admin import auth
7
+
8
+ # Use the application default credentials.
9
+ cred = credentials.Certificate('config.json')
10
+ firebase_admin.initialize_app(cred)
11
+
12
+ db = firestore.client()
13
+
14
+ def obtenDatosUIDFirebase(uid):
15
+ """
16
+ Verifica si un UID existe en Firebase Authentication.
17
+ Esto con el fin de evitar que se cambié el id arbitrareamente desde localstorage.
18
+
19
+ Args:
20
+ uid (str): El User ID (UID) que se desea verificar.
21
+
22
+ Returns:
23
+ bool: True si el usuario con ese UID existe, False en caso contrario.
24
+ """
25
+ try:
26
+ user = auth.get_user(uid) #Obtengo el objeto con todos los datos.
27
+ print("Ésto es el user obtenido de la comprobación: ", user)
28
+ email = user.email
29
+ displayName = user.display_name
30
+
31
+ # Si la operación es exitosa, el usuario existe
32
+ print(f"✔️ Usuario con UID '{uid}' encontrado en Firebase Auth: {user.email or 'sin email'}")
33
+ return email, displayName
34
+ except auth.UserNotFoundError:
35
+ # Esta excepción se lanza específicamente si el UID no existe
36
+ print(f"❌ Usuario con UID '{uid}' NO encontrado en Firebase Auth.")
37
+ return None, None
38
+ except Exception as e:
39
+ # Captura cualquier otro error (ej. problemas de conexión, permisos)
40
+ print(f"❌ Error al verificar usuario con UID '{uid}': {e}")
41
+ return None, None
42
+
43
+ def obtenDato(coleccion, dato, info):
44
+
45
+ print(f"Estoy dentro de obtenDato y los valores que recibí son: {coleccion}, {dato}, {info}...")
46
+ #Primero debemos definir la referencia al documento, o sea a la hoja de usuario.
47
+ doc_ref = db.collection(coleccion).document(dato)
48
+
49
+ #Éste es el documento que tiene los datos de ella.
50
+ documento = doc_ref.get()
51
+ print("Esto es el documento obtenido: ", documento)
52
+
53
+ #Quizá éste segmento que comenté era el que producia nuevos documentos sin deber.
54
+ if documento.exists:
55
+ print("El documento existe....")
56
+ #Recuerda la conversión a diccionario.
57
+ documento = doc_ref.get()
58
+ diccionario = documento.to_dict()
59
+ print("Esto es el diccionario: ", diccionario)
60
+ resultado = diccionario.get(info)
61
+ print("Éste es el resultado...", resultado)
62
+ return resultado
63
+ pass #El documento si existe.
64
+ else:
65
+ print("No existe el documento, es un nuevo usuario.")
66
+ return None
67
+ #No crees nada pero avisa que no existe.
68
+ #creaDato(coleccion, dato, 'tokens', 5) #porque agregará 5 tokens.
69
+
70
+ def editaDato(coleccion, dato, info, contenido):
71
+
72
+ #Primero debemos definir la referencia al documento, o sea a la hoja de usuario.
73
+ doc_ref = db.collection(coleccion).document(dato)
74
+
75
+ doc_ref.update({
76
+ # 'quote': quote,
77
+ info: contenido,
78
+ })
79
+
80
+ def creaDato(coleccion, dato, info, contenido):
81
+
82
+ #Primero debemos definir la referencia al documento, o sea a la hoja de usuario.
83
+ doc_ref = db.collection(coleccion).document(dato)
84
+
85
+ doc_ref.set({
86
+ # 'quote': quote,
87
+ info: contenido,
88
+ })
89
+
90
+ def creaDatoMultiple(coleccion, dato, data_dict):
91
+ """
92
+ Crea un nuevo documento o sobrescribe uno existente en Firestore
93
+ con múltiples pares de campo-contenido.
94
+
95
+ Args:
96
+ coleccion (str): El nombre de la colección donde se creará/actualizará el documento.
97
+ dato (str): El ID del documento que se va a crear o sobrescribir.
98
+ data_dict (dict): Un diccionario donde las claves son los nombres de los campos
99
+ y los valores son el contenido de esos campos.
100
+ Ej: {'nombre': 'Juan', 'edad': 30, 'activo': True}
101
+ """
102
+ # Primero definimos la referencia al documento
103
+ doc_ref = db.collection(coleccion).document(dato)
104
+
105
+ try:
106
+ # Usamos .set() y le pasamos el diccionario completo.
107
+ # Esto sobrescribirá el documento si ya existe con los nuevos datos.
108
+ doc_ref.set(data_dict)
109
+
110
+ print(f"✔️ Documento '{dato}' creado/sobrescrito en la colección '{coleccion}' con los siguientes datos:")
111
+ for key, value in data_dict.items():
112
+ print(f" - {key}: {value}")
113
+
114
+ except Exception as e:
115
+ print(f"❌ Error al crear/sobrescribir documento '{dato}' en '{coleccion}': {e}")
116
+
117
+ def verificar_token(id_token):
118
+ """Verifica el token de ID de Firebase."""
119
+ try:
120
+ # Verifica el token y decodifica la información del usuario
121
+ decoded_token = auth.verify_id_token(id_token)
122
+ uid = decoded_token['uid']
123
+ return uid # Retorna el UID del usuario si el token es válido
124
+ except auth.InvalidIdTokenError as e:
125
+ print(f"Token inválido: {e}")
126
+ return None # Retorna None si el token es inválido
requirements.txt CHANGED
Binary files a/requirements.txt and b/requirements.txt differ