-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.py
37 lines (30 loc) · 1.54 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import logging
import time
from collections import defaultdict
from app.config import TIMEOUT
from app.models import Subscription, session
from app.nano import check_account_for_new_transactions, check_account_for_new_pending, get_pendings
logger = logging.getLogger(__name__)
if __name__ == '__main__':
last_known_trans = defaultdict(str)
last_known_pending = defaultdict(dict)
# Initialise pendings before notifying
for subscription in session.query(Subscription):
last_known_pending[subscription.account] = get_pendings(subscription.account)
while True:
subToEmails = defaultdict(list)
subToWebhooks = defaultdict(list)
logger.info('Loading email subscriptions')
# Map account to emails and HTTP addresses
for subscription in session.query(Subscription):
subToEmails[subscription.account].append(subscription.email)
if subscription.webhook:
subToWebhooks[subscription.account].append(subscription.webhook)
for account in subToEmails.keys():
logger.info(f'Checking for new transactions for {account}')
emails = subToEmails[account]
webhooks = subToWebhooks[account]
account_last_known_trans = last_known_trans[account]
last_known_trans[account] = check_account_for_new_transactions(account, account_last_known_trans, emails, webhooks)
last_known_pending[account] = check_account_for_new_pending(account, last_known_pending[account], emails, webhooks)
time.sleep(TIMEOUT)