Source code for saberx.sabercore.triggers.filetrigger

"""
.. module:: filetrigger
   :synopsis: Module for firing file trigger.
"""

from .triggerbase import TriggerBase
from .filehandler import FileHandler

[docs]class FileTrigger(TriggerBase): """ **Class for creating file trigger** """ def __init__(self, **kwargs): """ **Method for initialing File trigger** """ super(FileTrigger, self).__init__(type=kwargs.get("type"), check=kwargs.get("check"), negate=kwargs.get("negate")) if kwargs.get("regex"): self.regex = kwargs.get("regex") if kwargs.get("path"): self.path = kwargs.get("path") self.position = kwargs.get("position", "tail") self.limit = kwargs.get("limit", 50) self.valid_checks = ["empty", "present", "regex"] self.valid_positions = ["head", "tail"]
[docs] def fire_trigger(self): """ **Method to fire the trigger** This method first sanitises the parameters, calls file handler to evaluate the trigger conditions and returns trigger status Returns: bool : Trigger fired or not """ if not self.sanitise(): return False, "IMPROPER_ARGUMENTS" if self.check == "present": triggered, error = FileHandler.is_present(self.path) return self.eval_negate(triggered, error) if self.check == "empty": triggered, error = FileHandler.is_empty(self.path) return self.eval_negate(triggered, error) if self.check == "regex": triggered, error = FileHandler.search_keyword(path=self.path, limit=self.limit, position=self.position, regex=self.regex) return self.eval_negate(triggered, error)
[docs] def sanitise(self): if not self.path: ''' Log error ''' return False if not self.type: ''' Log the error ''' return False if not self.check: ''' Log error ''' return False if not (self.check in self.valid_checks): ''' Log error ''' return False if self.limit and self.limit <= 0: ''' Log error ''' return False if self.position and not (self.position in self.valid_positions): ''' Log error ''' return False return True