first commit
This commit is contained in:
commit
b9a75bd65a
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
__pycache__/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
Lib/
|
||||||
|
.vscode/
|
||||||
|
Include/
|
||||||
|
Scripts/
|
||||||
|
*.log
|
||||||
|
*.log.*
|
||||||
|
pyvenv.cfg
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
from src.pushbullet import Pushbullet
|
||||||
|
from src.telegram import Telegram
|
||||||
|
from src.email import Email
|
||||||
|
from src.sms import SMS
|
||||||
|
from src.synology_chat import SynologyChat
|
||||||
|
from src.naver_line import NaverLine
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
class MessageController:
|
||||||
|
def __init__(self, method, **credentials):
|
||||||
|
self.method = method.lower()
|
||||||
|
self.credentials = credentials
|
||||||
|
self.message_service = self.create_service()
|
||||||
|
|
||||||
|
def create_service(self):
|
||||||
|
if self.method == 'pushbullet':
|
||||||
|
return Pushbullet(self.credentials['access_token'])
|
||||||
|
elif self.method == 'telegram':
|
||||||
|
return Telegram(self.credentials['api_key'])
|
||||||
|
elif self.method == 'email':
|
||||||
|
return Email(self.credentials['user'], self.credentials['password'])
|
||||||
|
elif self.method == 'sms':
|
||||||
|
return SMS(self.credentials['api_key'])
|
||||||
|
elif self.method == 'synology_chat':
|
||||||
|
return SynologyChat(self.credentials['url'], self.credentials['token'])
|
||||||
|
elif self.method == 'naver_line':
|
||||||
|
return NaverLine(self.credentials['access_token'])
|
||||||
|
else:
|
||||||
|
raise ValueError("지원하지 않는 메시지 전송 방식입니다.")
|
||||||
|
|
||||||
|
def send_message(self, title, body):
|
||||||
|
print(f"{self.method.title()}를 통해 메시지를 보내는 중...")
|
||||||
|
self.message_service.send_message(title, body)
|
||||||
|
|
||||||
|
def test_message(self):
|
||||||
|
self.send_message("테스트 타이틀", "테스트 본문입니다.")
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
import smtplib
|
||||||
|
from email.mime.text import MIMEText
|
||||||
|
from email.mime.multipart import MIMEMultipart
|
||||||
|
|
||||||
|
class Email:
|
||||||
|
def __init__(self, user, password, smtp_server='smtp.gmail.com', smtp_port=587):
|
||||||
|
self.user = user
|
||||||
|
self.password = password
|
||||||
|
self.smtp_server = smtp_server
|
||||||
|
self.smtp_port = smtp_port
|
||||||
|
|
||||||
|
def send_email(self, recipient, subject, body):
|
||||||
|
message = MIMEMultipart()
|
||||||
|
message['From'] = self.user
|
||||||
|
message['To'] = recipient
|
||||||
|
message['Subject'] = subject
|
||||||
|
message.attach(MIMEText(body, 'plain'))
|
||||||
|
|
||||||
|
with smtplib.SMTP(self.smtp_server, self.smtp_port) as server:
|
||||||
|
server.starttls()
|
||||||
|
server.login(self.user, self.password)
|
||||||
|
server.send_message(message)
|
||||||
|
|
||||||
|
print(f"Email 전송 완료: {subject} to {recipient}")
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
class NaverLine:
|
||||||
|
def __init__(self, access_token):
|
||||||
|
self.access_token = access_token
|
||||||
|
|
||||||
|
def send_message(self, message):
|
||||||
|
headers = {
|
||||||
|
'Authorization': f'Bearer {self.access_token}'
|
||||||
|
}
|
||||||
|
data = {
|
||||||
|
'message': message
|
||||||
|
}
|
||||||
|
response = requests.post("https://notify-api.line.me/api/notify", headers=headers, data=data)
|
||||||
|
response.raise_for_status()
|
||||||
|
print(f"LINE 메시지 전송 완료: {message}")
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
class Pushbullet:
|
||||||
|
def __init__(self, access_token):
|
||||||
|
self.access_token = access_token
|
||||||
|
print("Pushbullet 인스턴스가 생성되었습니다.")
|
||||||
|
|
||||||
|
def send_message(self, title, body):
|
||||||
|
data = {"type": "note", "title": title, "body": body}
|
||||||
|
response = requests.post('https://api.pushbullet.com/v2/pushes',
|
||||||
|
data=data,
|
||||||
|
headers={'Access-Token': self.access_token})
|
||||||
|
if response.status_code != 200:
|
||||||
|
raise Exception("Pushbullet 메시지 전송 실패")
|
||||||
|
print("Pushbullet 메시지 전송 성공")
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
from twilio.rest import Client
|
||||||
|
|
||||||
|
class SMS:
|
||||||
|
def __init__(self, account_sid, auth_token):
|
||||||
|
self.client = Client(account_sid, auth_token)
|
||||||
|
|
||||||
|
def send_sms(self, from_number, to_number, message):
|
||||||
|
self.client.messages.create(
|
||||||
|
to=to_number,
|
||||||
|
from_=from_number,
|
||||||
|
body=message
|
||||||
|
)
|
||||||
|
print(f"SMS 전송 완료: {message} to {to_number}")
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
class SynologyChat:
|
||||||
|
def __init__(self, webhook_url):
|
||||||
|
self.webhook_url = webhook_url
|
||||||
|
|
||||||
|
def send_message(self, message):
|
||||||
|
payload = {'text': message}
|
||||||
|
response = requests.post(self.webhook_url, json=payload)
|
||||||
|
response.raise_for_status()
|
||||||
|
print(f"시놀로지 Chat 메시지 전송 완료: {message}")
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
class Telegram:
|
||||||
|
def __init__(self, api_key, chat_id):
|
||||||
|
self.api_key = api_key
|
||||||
|
self.chat_id = chat_id
|
||||||
|
|
||||||
|
def send_message(self, text):
|
||||||
|
url = f"https://api.telegram.org/bot{self.api_key}/sendMessage"
|
||||||
|
payload = {
|
||||||
|
"chat_id": self.chat_id,
|
||||||
|
"text": text
|
||||||
|
}
|
||||||
|
response = requests.post(url, json=payload)
|
||||||
|
response.raise_for_status()
|
||||||
|
print(f"Telegram 메시지 전송 완료: {text}")
|
||||||
Loading…
Reference in New Issue