# -- coding: utf-8 --

#  sudo  -H pip install pydash



def read_file( path ="",flag = "r", encoding='utf8') :
    return handle_file(handle="read", path =path,flag = flag, encoding=encoding)
    
def write_file( data="", path="", flag = "w+", encoding='utf8') :
    return handle_file(handle = "write",data=data, path =path,flag = flag, encoding=encoding)
    
def handle_file( **kwargs) :
    try:
        with open(kwargs['path'] , kwargs['flag'], encoding=kwargs['encoding']) as file:
            if kwargs['handle'] == 'read':
                return file.read() 
            elif kwargs['handle'] == 'write':
                return file.write(kwargs['data'])
            else:
                pass
                
    except IOError as error:
        print(str(error))
        exit()
        
    
if __name__ == "__main__":
    import sys, os
    import traceback
    from importlib import import_module
    from os import path
    apiName   = sys.argv[1] 
    emp_fil   = sys.argv[5].lower()
        
    _class = False
    
    if '#' in apiName:
        dados = apiName.split('#')
        apiName = dados[0]

    _path   = f"{apiName}.{apiName}"#.format()    
    
    if path.exists(f"/var/www/html/webservice/gn_integracao/{apiName}/companies/{emp_fil}/{emp_fil}.py") :
        """Analisa se existe uma classe especifica por empresa, caso sim ela sera a principal"""
        _path = f"{apiName}.companies.{emp_fil}.{emp_fil}"
        apiName = emp_fil
        
    try:
        
        _module = import_module(_path)
        write_file(path="./startLog.txt", data= f"Iniciando modulo {_path}")
        _class  = getattr(_module, apiName)
    except Exception  as error :
        print(error)
        write_file(path="./startLog.txt", data= f"Erro ao carregar modulo {_path} - {str(error)}")
        #raise Exception("API NAO ENCONTRADA") 
        
    if (_class) :
        try:
            _class(sys.argv)
        except ZeroDivisionError as error:
            write_file(path=f"/var/tmp/log-api-{apiName}.txt", data= f"Exception - {str(error)}")
            print(traceback.format_exc())
        
