From 7c3abe7ba738de25c981624bbed23bcabf4a73ab Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Wed, 17 Dec 2014 11:44:31 +0100 Subject: [PATCH] IDisplay --- letsencrypt/client/display.py | 42 +++++++------------------------- letsencrypt/client/interfaces.py | 31 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/letsencrypt/client/display.py b/letsencrypt/client/display.py index 700d69f8e..5fff122b9 100644 --- a/letsencrypt/client/display.py +++ b/letsencrypt/client/display.py @@ -1,46 +1,20 @@ import textwrap import dialog +import zope.interface + +from letsencrypt.client import interfaces WIDTH = 72 HEIGHT = 20 -class Display(object): - """Generic display.""" - - def generic_notification(self, message): - raise NotImplementedError() - - def generic_menu(self, message, choices, input_text=""): - raise NotImplementedError() - - def generic_input(self, message): - raise NotImplementedError() - - def generic_yesno(self, message, yes_label="Yes", no_label="No"): - raise NotImplementedError() - - def filter_names(self, names): - raise NotImplementedError() - - def success_installation(self, domains): - raise NotImplementedError() - - def display_certs(self, certs): - raise NotImplementedError() - - def confirm_revocation(self, cert): - raise NotImplementedError() - - def more_info_cert(self, cert): - raise NotImplementedError() - - -class NcursesDisplay(Display): +class NcursesDisplay(object): + zope.interface.implements(interfaces.IDisplay) def __init__(self, width=WIDTH, height=HEIGHT): + super(NcursesDisplay, self).__init__() self.dialog = dialog.Dialog() self.width = width self.height = height @@ -112,9 +86,11 @@ class NcursesDisplay(Display): self.dialog.msgbox(text, width=self.width, height=self.height) -class FileDisplay(Display): +class FileDisplay(object): + zope.interface.implements(interfaces.IDisplay) def __init__(self, outfile): + super(FileDisplay, self).__init__() self.outfile = outfile def generic_notification(self, message): diff --git a/letsencrypt/client/interfaces.py b/letsencrypt/client/interfaces.py index cbe71cd4c..8f7f10e97 100644 --- a/letsencrypt/client/interfaces.py +++ b/letsencrypt/client/interfaces.py @@ -103,6 +103,37 @@ class IConfigurator(zope.interface.Interface): """Cleanup configuration changes from challenge.""" +class IDisplay(zope.interface.Interface): + """Generic display.""" + + def generic_notification(message): + pass + + def generic_menu(message, choices, input_text=""): + pass + + def generic_input(message): + pass + + def generic_yesno(message, yes_label="Yes", no_label="No"): + pass + + def filter_names(names): + pass + + def success_installation(domains): + pass + + def display_certs(certs): + pass + + def confirm_revocation(cert): + pass + + def more_info_cert(cert): + pass + + class IValidator(object): """Configuration validator."""