summaryrefslogtreecommitdiffstats
path: root/common/misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'common/misc.py')
-rwxr-xr-xcommon/misc.py62
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