import os
import time
import requests
from datetime import datetime
# from tqdm import tqdm

ROOT = "/root/TannedCung/sbt-idp/feedback"

interval = 3
# Get the proxy URL from the environment variable
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/images/feedback_file/'

def login():
    login_token = None
    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()))
    return login_token

def feedback(login_token, file_path):
    headers = {'Authorization': login_token}
    files = {
        'files': (file_path.split("/")[-1], open(file_path, 'rb'), 'text/csv')
        }
    response = requests.post(update_url, headers=headers, files=files)

    if response.status_code == 200:
        print('[INFO]: File uploaded successfully.')
    else:
        print('[ERROR]: File upload failed.')

def search_csv_files(directory):
    csv_files = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(".csv"):
                csv_files.append(os.path.join(root, file))
    
    csv_files.sort(key=lambda path: int(os.path.basename(os.path.dirname(path))))
    return csv_files

def main():
    login_token = login()
    list_files = search_csv_files(ROOT)
    for _file in list_files:
        feedback(login_token, _file)
        time.sleep(interval)

if __name__ == "__main__":
    main()