mirror of https://github.com/CIRCL/AIL-framework
				
				
				
			Add initial support for Webhook in Term Trackers
							parent
							
								
									661bcf37f7
								
							
						
					
					
						commit
						30d66ef3a8
					
				|  | @ -374,6 +374,9 @@ def get_term_tags(term_uuid): | |||
| def get_term_mails(term_uuid): | ||||
|     return list(r_serv_term.smembers('tracker:mail:{}'.format(term_uuid))) | ||||
| 
 | ||||
| def get_term_webhook(term_uuid): | ||||
|     return list(r_serv_term.hget('tracker:webhook:{}'.format(term_uuid))) | ||||
| 
 | ||||
| def add_tracked_item(term_uuid, item_id, item_date): | ||||
|     # track item | ||||
|     r_serv_term.sadd('tracker:item:{}:{}'.format(term_uuid, item_date), item_id) | ||||
|  |  | |||
|  | @ -13,6 +13,8 @@ import os | |||
| import sys | ||||
| import time | ||||
| import signal | ||||
| import requests | ||||
| 
 | ||||
| 
 | ||||
| sys.path.append(os.environ['AIL_BIN']) | ||||
| ################################## | ||||
|  | @ -24,21 +26,24 @@ from packages.Item import Item | |||
| from packages import Term | ||||
| from lib import Tracker | ||||
| 
 | ||||
| 
 | ||||
| class TimeoutException(Exception): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| def timeout_handler(signum, frame): | ||||
|     raise TimeoutException | ||||
| 
 | ||||
| 
 | ||||
| signal.signal(signal.SIGALRM, timeout_handler) | ||||
| 
 | ||||
| 
 | ||||
| class Tracker_Term(AbstractModule): | ||||
| 
 | ||||
|     mail_body_template = "AIL Framework,\nNew occurrence for tracked term: {}\nitem id: {}\nurl: {}{}" | ||||
| 
 | ||||
|     """ | ||||
|     Tracker_Term module for AIL framework | ||||
|     """ | ||||
| 
 | ||||
|     def __init__(self): | ||||
|         super(Tracker_Term, self).__init__() | ||||
| 
 | ||||
|  | @ -56,7 +61,6 @@ class Tracker_Term(AbstractModule): | |||
| 
 | ||||
|         self.redis_logger.info(f"Module: {self.module_name} Launched") | ||||
| 
 | ||||
| 
 | ||||
|     def compute(self, item_id): | ||||
|         # refresh Tracked term | ||||
|         if self.last_refresh_word < Term.get_tracked_term_last_updated_by_type('word'): | ||||
|  | @ -88,7 +92,7 @@ class Tracker_Term(AbstractModule): | |||
| 
 | ||||
|         if dict_words_freq: | ||||
|             # create token statistics | ||||
|             #for word in dict_words_freq: | ||||
|             # for word in dict_words_freq: | ||||
|             #    Term.create_token_statistics(item_date, word, dict_words_freq[word]) | ||||
|             item_source = item.get_source() | ||||
| 
 | ||||
|  | @ -135,8 +139,14 @@ class Tracker_Term(AbstractModule): | |||
|                     print(f'S        print(item_content)end Mail {mail_subject}') | ||||
|                     NotificationHelper.sendEmailNotification(mail, mail_subject, mail_body) | ||||
| 
 | ||||
|                 webhook_to_post = Term.get_term_webhook(term_uuid) | ||||
|                 if webhook_to_post: | ||||
|                     request_body = dict({"itemId": item_id, "url": self.full_item_url, "type": "Term", "term": term}) | ||||
|                     r = requests.post(webhook_to_post, data=request_body) | ||||
|                     if (r.status_code >= 400): | ||||
|                         raise Exception(f"Webhook request failed for {webhook_to_post}\nReason: {r.reason}") | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
| 
 | ||||
|     module = Tracker_Term() | ||||
|     module.run() | ||||
|  |  | |||
|  | @ -77,6 +77,7 @@ PySocks>=1.7.1 | |||
| pycountry>=20.7.3 | ||||
| https://github.com/saffsd/langid.py/archive/master.zip | ||||
| 
 | ||||
| requests | ||||
| 
 | ||||
| 
 | ||||
| ##### Old packages | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 TonyJabbour
						TonyJabbour