Wpp1State.py 1.66 KB
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)