import os import time import requests from datetime import datetime # Get the proxy URL from the environment variable interval = 60*60*1 # 1 minute update_cost = int(60*2) proxy_url = os.getenv('PROXY', "localhost") # Define the login API URL login_url = f'{proxy_url}/api/ctel/login/' login_token = None # Define the login credentials login_credentials = { 'username': 'sbt', 'password': '7Eg4AbWIXDnufgn' # 'password': 'abc' } # Define the command to call the update API update_url = f'{proxy_url}/api/ctel/make_report/' update_data = { 'is_daily_report': True, 'report_overview_duration': '', 'subsidiary': None } "report_overview_duration" # def update_report(login_token, report_overview_duration=["30d", "7d"], subsidiary=["all", "SEAU", "SESP", "SME", "SEPCO", "TSE", "SEIN"]): def update_report(login_token, report_overview_duration=["30d", "7d"], subsidiary=["SEAO", "SEAU", "SESP", "SME", "SEPCO", "TSE", "SEIN"]): headers = {'Authorization': login_token} for dur in report_overview_duration: for sub in subsidiary: update_data["report_overview_duration"] = dur update_data["subsidiary"] = sub update_response = requests.post(update_url, data=update_data, headers=headers) print("[INFO]: update_response at {} by {} - {} with status {}".format(datetime.now(), dur, sub, update_response.status_code)) update_response.raise_for_status() time.sleep(update_cost) # Define the interval in seconds between API calls # time.sleep(60) while True: # Call the login API and retrieve the login token if not login_token: login_response = requests.post(login_url, data=login_credentials) # login_response.raise_for_status() if login_response.status_code == 200: login_token = login_response.json()['token'] print("[INFO] relogged in at {}".format(datetime.now())) # Call the update API try: update_report(login_token) except Exception as e: print(f"[ERROR]: {e}") print(f"[ERROR]: Failed to update_response, retrying...") login_response = requests.post(login_url, data=login_credentials) # login_response.raise_for_status() if login_response.status_code == 200: login_token = login_response.json()['token'] print("[INFO] relogged in at {}".format(datetime.now())) update_report(login_token) # Wait for the specified interval time.sleep(interval)