Spaces:
Sleeping
Sleeping
| import ast | |
| import tools | |
| import avaimet | |
| import globales | |
| import nycklar.nodes as nodes | |
| #Aqu铆 van las funciones principales, las que son llamadas directo por la API. | |
| #Las que interactuan con el servidor est谩n en el m贸dulo avaimet. | |
| #Y las herramientas adicionales est谩n en tools. | |
| def getData(aplicacion): | |
| sshListo, sftpListo = avaimet.conecta() | |
| #dir_data = avaimet.obtenDireccionArchivo() #Coment茅 茅ste pq me estar铆a ahorrando 茅sta funci贸n as铆: | |
| dir_data = nodes.users_data + aplicacion + globales.data | |
| #Obtiene el json con los datos. | |
| data = avaimet.obtenContenidoArchivo(sftpListo, dir_data) | |
| #Cierra la conexi贸n. | |
| avaimet.cierraConexion(sshListo, sftpListo) | |
| return data | |
| def getTokens(userfile, env): | |
| #Genera conexi贸n inicial. | |
| sshListo, sftpListo = avaimet.conecta() | |
| #Obtiene la caja donde est谩 guardados los tokens. | |
| caja = avaimet.obtenCaja(userfile, env) | |
| #Obtiene los tokens que hay en esa caja. | |
| tokens = avaimet.obtenTokens(sftpListo, caja) | |
| #Cierra la conexi贸n. | |
| avaimet.cierraConexion(sshListo, sftpListo) | |
| return tokens | |
| def authorize(tokens, work): | |
| #print(f"Task received : {work}, type: {type(work)} ...") | |
| ##脡sta secci贸n se reutilizar谩 si en lugar de pasar el par谩metro token, se pasa el par谩metro userfile. | |
| #Actualmente no lo pedimos porque es el developer el que pone la cantidad de tokens que el usuario tiene para... | |
| #...evitar otra vuelta al server, por mayor certeza o seguridad se puede hacer esa ida. | |
| #En un futuro incluso se pueden hacer los dos tipos de autorizaci贸n en dos endpoints distintos. O en un solo endpoint con... | |
| #...las dos opciones. | |
| #Genera conexi贸n inicial. | |
| #sshListo, sftpListo = avaimet.conecta() | |
| #Obtiene la caja donde est谩 guardados los tokens. | |
| #caja = avaimet.obtenCaja(userfile) | |
| #Obtiene los tokens que hay en esa caja. | |
| #tokens = avaimet.obtenTokens(sftpListo, caja) | |
| #True si autoriza o false si no autoriza. | |
| result = avaimet.autoriza(tokens, work) | |
| #Cierra la conexi贸n. | |
| #avaimet.cierraConexion(sshListo, sftpListo) | |
| return result | |
| def debitTokens(userfile, work, env): | |
| #Genera conexi贸n inicial. | |
| sshListo, sftpListo = avaimet.conecta() | |
| #Obtiene la caja donde est谩 guardados los tokens. | |
| caja = avaimet.obtenCaja(userfile, env) | |
| #Obtiene los tokens que hay en esa caja. | |
| tokens = avaimet.obtenTokens(sftpListo, caja) | |
| #Aplica las reglas de 茅sta app para debitar lo correspondiente. | |
| resultado_debitado = avaimet.restaToken(sftpListo, caja, tokens, work) | |
| #Cierra la conexi贸n. | |
| avaimet.cierraConexion(sshListo, sftpListo) | |
| return resultado_debitado | |
| def getQuota(): | |
| #Genera conexi贸n inicial. | |
| sshListo, sftpListo = avaimet.conecta() | |
| dir_quota = nodes.quota + globales.quota | |
| #Obtiene el json con los datos. | |
| data = avaimet.obtenContenidoArchivo(sftpListo, dir_quota) | |
| #Cierra la conexi贸n. | |
| avaimet.cierraConexion(sshListo, sftpListo) | |
| return int(data) | |
| def updateQuota(costo_proceso): | |
| #Genera conexi贸n inicial. | |
| sshListo, sftpListo = avaimet.conecta() | |
| dir_quota = nodes.quota + globales.quota | |
| #Obtiene el json con los datos. | |
| quota_actual = avaimet.obtenContenidoArchivo(sftpListo, dir_quota) | |
| #Aplica las reglas de 茅sta app para debitar lo correspondiente. | |
| quota_modificada = avaimet.modificaQuota(sftpListo, dir_quota, quota_actual, costo_proceso) | |
| #Cierra la conexi贸n. | |
| avaimet.cierraConexion(sshListo, sftpListo) | |
| return quota_modificada | |
| def getUserNovelty(userfile, aplicacion): | |
| usuario = tools.decompileUser(userfile) | |
| #Genera conexi贸n inicial (general para cualquier funci贸n.) | |
| sshListo, sftpListo = avaimet.conecta() | |
| #Obtiene la caja donde est谩 guardados las flags de novelty. | |
| #dir_data = avaimet.obtenDireccionArchivo(globales.novelty) | |
| dir_data = nodes.users_data + aplicacion + globales.novelty | |
| #Obtiene el json con los datos. | |
| data = avaimet.obtenContenidoArchivo(sftpListo, dir_data) | |
| # Convertir el string a una lista de tuplas utilizando ast.literal_eval() | |
| lista_tuplas = ast.literal_eval(data) | |
| tupla_encontrada = None # Inicializamos una variable para almacenar la tupla encontrada | |
| avaimet.cierraConexion(sshListo, sftpListo) | |
| #Future, 驴se puede acaso que se cierre el contenido y que haga la conversi贸n al mismo tiempo? (threads) | |
| #Repasa todas las tuplas | |
| for tupla in lista_tuplas: | |
| if tupla[0] == usuario: | |
| tupla_encontrada = tupla | |
| break | |
| if tupla_encontrada: | |
| #print("Usuario encontrado:", tupla_encontrada) | |
| novelty = tupla_encontrada[1] | |
| return novelty | |
| else: | |
| print("No se encontr贸 ese usuario.") | |
| return "no user" |