# pylint: disable=C0111,R0903

"""Shows yubikey information

Requires: https://github.com/Yubico/python-yubico

The output indicates that a YubiKey is not connected or it displays
the corresponding serial number.

"""

import yubico

import core.module
import core.widget
import core.decorators

class Module(core.module.Module):
    @core.decorators.every(seconds=5)
    def __init__(self, config):
        super().__init__(config, core.widget.Widget(self.keystate))
        self.__keystate = 'No YubiKey'

    def keystate(self, widget):
        return self.__keystate

    def update(self):
        try:
            self.__keystate = "YubiKey: " + str(yubico.find_yubikey(debug=False).serial())
        except yubico.yubico_exception.YubicoError:
            self.__keystate = "No YubiKey"
        except Exception:
            self.__keystate = 'n/a'

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4