sulku-fastapi-docker / funciones.py
Moibe
Fix debittoken return
0ad66b3
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"