-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexchange_monitor.py
More file actions
39 lines (30 loc) · 1.16 KB
/
Copy pathexchange_monitor.py
File metadata and controls
39 lines (30 loc) · 1.16 KB
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
38
39
from datetime import datetime
from config import EXCHANGE_RATE_BASE_CURRENCY, EXCHANGE_RATE_TARGET_CURRENCY, THRESHOLD
from email_notifier import EmailNotifier
from exchange_rate_service import ExchangeRateService
from template_renderer import render_template
class ExchangeMonitor:
def __init__(self):
self.rate_service = ExchangeRateService()
self.notifier = EmailNotifier()
def check_rate_and_notify(self):
rate = self.rate_service.get_base_to_target_currency()
if not rate:
return
if rate <= THRESHOLD:
return
subject = (
f"🚨 {EXCHANGE_RATE_BASE_CURRENCY}/"
f"{EXCHANGE_RATE_TARGET_CURRENCY} Alert"
)
html_body = render_template(
"exchange_alert_email.html",
{
"rate": f"{rate:.2f}",
"threshold": THRESHOLD,
"base_currency": EXCHANGE_RATE_BASE_CURRENCY,
"target_currency": EXCHANGE_RATE_TARGET_CURRENCY,
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
},
)
self.notifier.send_email(subject, html_body, html=True)