diff --git a/impression/etat_imprimante.py b/impression/etat_imprimante.py index ad52e366..ce6eac48 100644 --- a/impression/etat_imprimante.py +++ b/impression/etat_imprimante.py @@ -9,14 +9,32 @@ """ +import BeautifulSoup +import requests +import HTMLParser import sys from hptools import snmp +STATUS_URL = 'https://imprimante.adm.crans.org/hp/device/DeviceStatus/Index' +CA = '/etc/ssl/certs/cacert.org.pem' + class ErreurCommunication(Exception): """Si une erreur est survenue lors de la communication avec l'imprimante""" pass def etat(): - return ["L'imprimante est en cours de test. L'interfaçage n'est pas encore terminé, mais l'impression fonctionne dans la plupart des cas."] + return \ + ["L'imprimante est test. L'interfaçage n'est pas encore terminé.", + "Aucune notification de fin d'impression n'est envoyée pour le moment", + _http_status()] +def _http_status(): + try: + req = requests.get(STATUS_URL, verify=CA) + doc = BeautifulSoup.BeautifulSoup(req.text) + status_tag = doc.find(attrs={'id': 'MachineStatus'}) + h = HTMLParser.HTMLParser() + return h.unescape(status_tag.text) + except: + raise ErreurCommunication()