diff options
Diffstat (limited to 'common/misc.py')
-rwxr-xr-x | common/misc.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/common/misc.py b/common/misc.py new file mode 100755 index 0000000..86798b8 --- /dev/null +++ b/common/misc.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +import validators +from common.strings import StaticAnswers + + +def deduplicate(reply): + """ + list deduplication method + :param list reply: list containing non unique items + :return: list containing unique items + """ + reply_dedup = list() + for item in reply: + if item not in reply_dedup: + reply_dedup.append(item) + + return reply_dedup + + +def validate(keyword, target): + """ + validation method to reduce malformed querys and unnecessary connection attempts + :param keyword: used keyword + :param target: provided target + :return: true if valid + """ + # if keyword in domain_keywords list + if keyword in StaticAnswers().keys('domain_keywords'): + # if target is a domain / email return True + if validators.domain(target) or validators.email(target): + return True + + # check if keyword is in number_keyword list + elif keyword in StaticAnswers().keys('number_keywords'): + # if target only consists of digits return True + return target.isdigit() + + # if keyword is in no_arg_keywords list return True + elif keyword in StaticAnswers().keys("no_arg_keywords"): + return True + + # if the target could not be validated until this return False + return False + + +# +class HandleError: + """ + simple XMPP error / exception class formating the error condition + """ + def __init__(self, error, key, target): + # init all necessary variables + self.text = error.text + self.condition = error.condition + self.key = key + self.target = target + + def report(self): + # return the formatted result string to the user + text = "%s. %s %s resulted in: %s" % (self.text, self.key, self.target, self.condition) + + return text |