blob: 33228f567735ee8d75f0bd757361775a0558a417 [file] [log] [blame]
#!/usr/bin/env python3
"""
This is a wrapper to standardise the API for different versions
Foal:
def __init__(
self, generator=None, parse_html=False, ignore_body=None, verbose=False
):
def compute_updates(self, lid, private, msg, raw_msg):
Ponymail 12:
def __init__(
self, generator=None, parse_html=False, ignore_body=None, dump_dir=None, verbose=False, skipff=False
):
def compute_updates(self, lid, private, msg):
0.11, 0.10:
def __init__(self, parseHTML=False):
def compute_updates(self, lid, private, msg):
"""
import sys
import inspect
class Archiver(object):
def __init__(self, archiver_, args):
self.expected_archie_parameters = inspect.signature(archiver_.Archiver).parameters
self.expected_compute_parameters = inspect.signature(archiver_.Archiver.compute_updates).parameters
# <= 0.11:
if 'parseHTML' in self.expected_archie_parameters:
if hasattr(args, 'generator'):
archiver_.archiver_generator = args.generator
self.archie = archiver_.Archiver(parseHTML=args.parse_html)
# Ponymail 12+
elif 'skipff' in self.expected_archie_parameters:
self.archie = archiver_.Archiver(generator=getattr(args, 'generator', None),
parse_html=args.parse_html,
ignore_body=None, # To be provided later
skipff=True)
else: # Foal
self.archie = archiver_.Archiver(generator=getattr(args, 'generator', None),
parse_html=args.parse_html,
ignore_body=None) # To be provided later
if 'raw_msg' in self.expected_compute_parameters:
self.compute = self._compute_foal
# PM 0.12 parameters
elif 'args' in self.expected_compute_parameters:
self.compute = self._compute_12
# PM <= 0.11 parameters (missing args)
else:
self.compute = self._compute_11
def _compute_foal(self, fake_args, lid, private, message, message_raw):
return self.archie.compute_updates(lid, private, message, message_raw)[0]
def _compute_12(self, fake_args, lid, private, message, message_raw):
return self.archie.compute_updates(fake_args, lid, private, message)[0]
def _compute_11(self, fake_args, lid, private, message, message_raw):
return self.archie.compute_updates(lid, private, message)[0]
def compute_updates(self, fake_args, lid, private, message, message_raw):
return self.compute(fake_args, lid, private, message, message_raw)