- Use ful path for config file so that it can be available if run from cron job
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
import requests
|
|
from dotenv import load_dotenv
|
|
import os
|
|
import logging, traceback
|
|
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format='[%(asctime)s] %(levelname)s: %(message)s',
|
|
handlers=[
|
|
logging.FileHandler("app.log"),
|
|
logging.StreamHandler() # logs to console
|
|
]
|
|
)
|
|
|
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
load_dotenv(dotenv_path=f"{script_dir}/config.env", override=True)
|
|
|
|
base_url = os.getenv("API_BASE_URL")
|
|
print(f"base_url: {base_url}")
|
|
|
|
def login():
|
|
payload = {
|
|
"username": os.getenv("USERNAME"),
|
|
"password": os.getenv("PASSWORD")
|
|
}
|
|
|
|
headers = {
|
|
"Content-Type": "application/json"
|
|
}
|
|
|
|
response = requests.post(f"{base_url}/auth/login",json=payload,headers=headers)
|
|
|
|
data = response.json()['data']
|
|
jwt = data["token"]
|
|
return jwt
|
|
|
|
def project_proccess(jwt):
|
|
headers = {
|
|
"Authorization": f"Bearer {jwt}",
|
|
"Content-Type": "application/json"
|
|
}
|
|
response = requests.get(f"{base_url}/report/project-statistics", headers=headers)
|
|
return response
|
|
|
|
try:
|
|
logging.info("Script started")
|
|
jwt = login()
|
|
logging.info("Login Success")
|
|
response = project_proccess(jwt) # Call your function
|
|
|
|
if response.status_code == 200:
|
|
print("Email sent")
|
|
logging.info("Script started")
|
|
else:
|
|
print(f"Failed with response: {response}")
|
|
logging.info(f"Failed with response: {response}")
|
|
except Exception:
|
|
msg = traceback.format_exc()
|
|
logging.error("An error occurred:\n%s", msg)
|
|
print(f"An error occurred: {msg }")
|
|
|