|
|
@@ -1,6 +1,8 @@
|
|
|
import os
|
|
|
+import logging
|
|
|
+import time
|
|
|
import requests
|
|
|
-from KdeConnect import KDEConnect
|
|
|
+from .KdeConnect import KDEConnect
|
|
|
|
|
|
from app.schemas.responses import AccessTokenResponse, SMSResponse
|
|
|
|
|
|
@@ -8,24 +10,27 @@ from app.schemas.responses import AccessTokenResponse, SMSResponse
|
|
|
def send_sms_from_api(url: str, login: str, pwd: str, device_name: str):
|
|
|
"""Connect to sms-server API to retreieve sms to be send and send them using kdeconnect-cli"""
|
|
|
# Log in to API get access token
|
|
|
- response = requests.get(
|
|
|
+ response = requests.post(
|
|
|
url + "/auth/access-token",
|
|
|
data={"grant_type": "password", "username": login, "password": pwd},
|
|
|
)
|
|
|
- authentication: AccessTokenResponse = response.json()
|
|
|
+ authentication = AccessTokenResponse.parse_raw(response.content)
|
|
|
headers = {"Authorization": "Bearer " + authentication.access_token}
|
|
|
|
|
|
# List SMS to be send
|
|
|
response = requests.get(url + "/sms/to-send", headers=headers)
|
|
|
- sms_list: list[SMSResponse] = response.json()
|
|
|
-
|
|
|
+ sms_list: list[SMSResponse] = [SMSResponse.parse_obj(obj) for obj in response.json()]
|
|
|
+ logging.info(f"{len(sms_list):5} SMS a envoyer")
|
|
|
# Init KDE Connect
|
|
|
kde = KDEConnect(device_name=device_name)
|
|
|
|
|
|
# send sms & update api
|
|
|
for sms in sms_list:
|
|
|
- kde.send_sms(sms.phone_number, sms.content)
|
|
|
- requests.get(url + "/sms/sent-now/" + sms.id, headers=headers)
|
|
|
+ try:
|
|
|
+ kde.send_sms(sms.phone_number, sms.content)
|
|
|
+ requests.post(url + "/sms/send-now/" + sms.id, headers=headers)
|
|
|
+ except Exception as exc:
|
|
|
+ logging.warning(f"Echec lors de l'envoie du sms {sms.id}\n{str(exc)}")
|
|
|
|
|
|
|
|
|
class InvalidEnvironnementVariable(Exception):
|
|
|
@@ -49,4 +54,17 @@ def main():
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
- main()
|
|
|
+ logging.basicConfig(
|
|
|
+ format="%(asctime)s %(levelname)s - %(message)s",
|
|
|
+ level=logging.DEBUG,
|
|
|
+ filemode="a",
|
|
|
+ filename="log.txt",
|
|
|
+ )
|
|
|
+ while True:
|
|
|
+ starting_time = time.time()
|
|
|
+ try:
|
|
|
+ main()
|
|
|
+ except Exception as e:
|
|
|
+ logging.exception("An error as occured : ")
|
|
|
+ elapsed_time = time.time() - starting_time
|
|
|
+ time.sleep(300 - elapsed_time)
|