Wpp1State.py
1.66 KB
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
import requests, json, config, datetime
class StatePhoneWs():
"""Esta clase consulta el estado de los telefonos y los cachea
la consulta tiene 30 segundos de valides, para mejorar la perfrmance"""
def __init__(self):
self.Consultas = {}#{telefono:{"hora": datetime.datetime.now, "estado": self.chequear_stado_WB(telefono)},}
def chequear_stado_WB(self, telefono):
if not len(telefono) == 13:
return({'error': 'Mal cargado el numero de telefono'})
consulta = """{}{}?token={}""".format(config.WS_Status,
telefono, config.WS_token)
r = requests.get(consulta)
j = r.json()
return(j)
def ChequearTelefono(self, telefono):
"""Chequea estado es el server remoto si esta conectado se almasena la
respuesta en cache durante 30 segundos para mejorar performance y si no esta
disponible no se almasena y la proxima respuesta debera hacerse contra el server
remoto para asegurarme de q se solucione el problema"""
test = self.revisarCache(telefono)
if not test == False:
return(test)
W = self.chequear_stado_WB(telefono)
if "error" in W.keys():#si hay algun error no actualiso el estado en cache
return(W)
hora = datetime.datetime.now() + datetime.timedelta(seconds=30)
self.Consultas[telefono] = {"hora": hora,
"estado": W}
return(W)
def revisarCache(self, telefono):
if not telefono in self.Consultas.keys():
return(False)
cel = self.Consultas[telefono]
if datetime.datetime.now() < cel["hora"]:
return(cel["estado"])
return(False)