#!/usr/bin/env python3 """ Control middleware """ import contextlib import shutil import pathlib import paramiko # type: ignore import pprint #import edi_943multi3pl #TODO remove 940 from this file THIS_DIRECTORY = pathlib.Path(__file__).parent X12_SHANDEX_OUTGOING = THIS_DIRECTORY / "outgoing" X12_SHANDEX_INCOMING = THIS_DIRECTORY / "incoming" def main(): """ Do it! """ #process all EDIs that start with us #edi_943-multi3pl.main()#TODO make this file Shandex only #send them to Shandex #send_x12_edi_files_shandex()#TODO set this up #pick up files from Shandex retrieve_x12_edi_files_shandex() #process all EDIs that started with Shandex #edi_997_outbound.main() #edi_945.main() # edi_944.main() # edi_997_inbound.main() #combine_zship945s() # SL_SFTP_HOST = "s-8ade4d252cc44c50b.server.transfer.us-west-1.amazonaws.com" # SL_SFTP_USERNAME = "yumiddleware2023" SSH_DIRECTORY = THIS_DIRECTORY / "ssh" SSH_KNOWN_HOSTS_FILE = str(SSH_DIRECTORY / "known_hosts") SSH_KEY_FILENAME = str(SSH_DIRECTORY / "id_ed25519") SHANDEX_SFTP_HOST = "ftp.shandex.com" SHANDEX_SFTP_USERNAME = "Stash" SHANDEX_SFTP_PASSWORD = "ST@Pass2024$$" def send_x12_edi_files_shandex(): """ Connect to FTP & send files. """ ssh_client.load_system_host_keys() ssh_client.load_host_keys(SSH_KNOWN_HOSTS_FILE) ssh_client.set_missing_host_key_policy(paramiko.client.RejectPolicy) ssh_client.connect( hostname=SHANDEX_SFTP_HOST, username=SHANDEX_SFTP_USERNAME, password=SHANDEX_SFTP_PASSWORD ) with ssh_client.open_sftp() as sftp_connection: sftp_connection.chdir("/Stash/Test/ToShandex") #TODO change to production folder for filename in X12_SHANDEX_OUTGOING.glob("*.edi"): sftp_connection.put(filename, str(filename.name)) shutil.move(filename, X12_SHANDEX_OUTGOING / "archive" / filename.name) def retrieve_x12_edi_files_shandex(): with paramiko.SSHClient() as ssh_client: ssh_client.load_system_host_keys() ssh_client.load_host_keys(SSH_KNOWN_HOSTS_FILE) ssh_client.set_missing_host_key_policy(paramiko.client.RejectPolicy) ssh_client.connect( hostname=SHANDEX_SFTP_HOST, username=SHANDEX_SFTP_USERNAME, password=SHANDEX_SFTP_PASSWORD ) with ssh_client.open_sftp() as sftp_connection: sftp_connection.chdir("/Stash/Test/FromShandex") for filename in sftp_connection.listdir(): if filename.endswith(".edi"): sftp_connection.get(filename, X12_SHANDEX_INCOMING / filename) #new_filename = f"/Stash/Test/FromShandex/Archive/{filename}" #sftp_connection.rename(filename, new_filename) if __name__ == "__main__": main()