File size: 3,911 Bytes
6d83a58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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 encrypta, que es una herramienta para prepara precisamente, ...
#lo que le vas a enviar a la API.
def encripta(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 getTokens(userfile):

    method = "getTokens/"
    api_url = base_url + method + userfile
    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/"
    api_url = base_url + method + str(tokens) + "/" + work
    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/"
    api_url = base_url + method + userfile + "/" + work
    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?"
    api_url = base_url + method + "userfile=" + userfile + "&" + "work=" +  work
    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)