Spaces:
Sleeping
Sleeping
import requests | |
import time | |
import nycklar.nodes as nodes | |
from cryptography.fernet import Fernet | |
#Sulkupypi ser谩 el que en un futuro se volver谩 un paquete de python que instalar谩s y en el futuro quiz谩 comercializar谩s. | |
base_url = "https://moibe-sulku-fastapi-docker.hf.space/" | |
userfile = "gAAAAABmEZA4SLBC2YczouOrjIEi9WNCNGOIvyUcqBUnzxNsftXTdy54KaX9x8mAjFkABSI6FJrdZDQKk_5lpJOgJoMChxlniw==" | |
#Ojo, cuando el userfile termina con s铆mbolo igual y supongo que tambi茅n si empieza, causa problemas, la soluci贸n, ... | |
#... implementar m谩s adelante desde ser agregar un caract茅r delimitador y desp煤es quitarlo, esto para evitar problemas... | |
#... con el s铆mbolo =, ? y &. Dicho problema solo sucede cuando lo recibe como query params no como path params. | |
work = "picswap" | |
#Todas son llamadas a la API, excepto encripta, que es una herramienta para prepara precisamente, ... | |
#lo que le vas a enviar a la API. | |
def encripta(username): | |
print("Estoy en encripta y 茅sto recib铆 para trabajarlo: ", username) | |
key = nodes.key | |
fernet = Fernet(key) | |
string_original = username | |
string_encriptado = fernet.encrypt(string_original.encode("utf-8")) | |
string_desencriptado = fernet.decrypt(string_encriptado).decode("utf-8") | |
print("String original:", string_original) | |
print("String encriptado:", string_encriptado) | |
print("String desencriptado:", string_desencriptado) | |
return string_encriptado | |
def getData(): | |
method = "getData/" | |
api_url = base_url + method | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
print("Conexi贸n a Sulku successful...") | |
data = response.json() | |
#IMPORTANTE: Aqu铆 se obtuvo la lista completa de accesos. | |
#Future, se puede optimizar eso en cuanto a seguridad? | |
else: | |
print("Error al obtener el elemento todo:", response.status_code) | |
return data | |
def getFlag(userfile): | |
method = "getUserFlag/" | |
params = userfile | |
api_url = base_url + method + params | |
print("Usando la api_url: ", api_url) | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
print("Conexi贸n a Sulku successful...") | |
flag = response.json() | |
print("Esto es la flag obtenida: ", flag) | |
else: | |
print("182: Error al obtener el elemento todo:", response.status_code) | |
return flag | |
def getTokens(userfile): | |
method = "getTokens/" | |
params = userfile | |
api_url = base_url + method + params | |
print("En getTokens la api_url que estoy usando es: ", api_url) | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
print("Conexi贸n a Sulku successful...") | |
tokens = response.json() | |
print("Tokens:", tokens) | |
else: | |
print("Error al obtener el elemento todo:", response.status_code) | |
return tokens | |
def authorize(tokens, work): | |
method = "authorize/" | |
params = str(tokens) + "/" + work | |
api_url = base_url + method + params | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
print("Conexi贸n a Sulku successful...") | |
autorizacion = response.json() | |
print("Autorizaci贸n:", autorizacion) | |
else: | |
print("Error al obtener el elemento todo:", response.status_code) | |
return autorizacion | |
def debitTokens(userfile, work): | |
method = "debitTokens/" | |
params = userfile + "/" + work | |
api_url = base_url + method + params | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
print("Conexi贸n a Sulku successful...") | |
tokens = response.json() | |
print("Tokens:", tokens) | |
else: | |
print("Error al obtener el elemento todo:", response.status_code) | |
return tokens | |
def debitTokensQ(userfile, work): | |
#debitTokens pero con QueryParams, (los query params sirve para ocasiones en los que usas dos de un mismo query param para abtener el resultado de un AND o rangos como... | |
#... clima por ejemplo.) | |
method = "debitTokens?" | |
params = "userfile=" + userfile + "&" + "work=" + work | |
api_url = base_url + method + params | |
response = requests.get(api_url) | |
if response.status_code == 200: | |
print("Conexi贸n a Sulku successful...") | |
tokens = response.json() | |
print("Tokens:", tokens) | |
else: | |
print("Error al obtener el elemento todo:", response.status_code) | |
return tokens | |
if __name__ == "__main__": | |
getTokens(userfile) | |
authorize(18,'picswap') | |
debitTokens(userfile, work) |