Metadata-Version: 2.1
Name: EcotrustAPI
Version: 1.2.2
Summary: Biblioteca para interação com API do EcotrustET
Home-page: UNKNOWN
Author: EcoIT - Dev Team
Author-email: pablo.viana@ecoit.com.br
License: UNKNOWN
Platform: UNKNOWN
Requires-Python: >=3.9
Description-Content-Type: text/markdown


    # EcotrustAPI - Python3
Biblioteca que interage com a api do Ecotrust e normaliza alguns retornos da plataforma.


# Ações possíveis pela lib

 - Criar scan parametrizado e executá-lo
 - Cadastrar ativo
 - Obter detalhes do ativo
 - Obter relatório
 - Executar scans 

## Exemplo de uso

```py
from ecotrust_api import EcotrustAPI  

  
def test_criar_ativo(api_control):  
 """  
	Cria um ativo na instância com os payloads abaixo, o padrão para cada chamada de api 
	é retornar um booleano err e uma mensagem que pode ser vazia ou populada com o retorno padrão da API.  
	Caso o ativo já exista, é retornado False e o endpoint retorna 500.  
		
 """  
  success, msg = api_control.criar_ativo({  
	'name': 'Teste ativo criado pela API',  
	'value': 'testphp.com.br',  
	'type': 'fqdn',  
	'criticity': 'high',  
	'financeiro': 900000000,  
	'description': 'Ativo criado via API',  
	'tags': 'Ativo Externo'  
 })  
 return success, msg  

def testar_criar_scan_parametrizado(api_control):  
 """  
	Cria um scan parametrizado no Ecotrust Obs: Os ativos especificados devem estar previamente cadastrados no Ecotrust  
	!! Anteção, os ativos devem ser do tipo: fqdn/url/domain...; e não podem conter espaços.   
	Para criar e já iniciar um scan pontual, configure o campo start_scan com "now" para executar imediamente 
	após a criação do scan parametrizado.
 """  
	success, msg = api_control.criar_scan_parametrizado({  
	 'title': 'Scan parametrizdo - API 4',  
	 'description': 'Scan parametrizado 23 via API',  
	 'sensor_nome': 'NET-SCAN',  
	 'sensor_politica': 'Descoberta Portas Abertas (TCP/53,56,80,443,8080)',  
	 'ativos': [  
		 'teste.api.com.br',  
		 'ecoit.com.br',  
	],  
	'start_scan': 'now',  
	'scan_type': 'single'  
  })  
	return success
  
def teste_aguardar_relatorio(api_control, scan_parametrizado_titulo):  
 """  
    Chame o método `obter_reporte_se_disponivel` logo após a criação do scan parametrizado com o campo `start_time`
    configurado como "now" ou execução de um scan já existente.
    
    Raises:
       NenhumScanRodando: Não há nenhum scan rodando para o scan parametrizado informado.   
       APIError: Erro ao efetuar parsing do JSON que o Ecotrust retorna.   
       
 """
    rel_ou_err = {}
    while True:
        success, rel_ou_err = api_control.obter_reporte_se_disponivel(scan_parametrizado_titulo)
        if not success and rel_ou_err != '':
            print(f"Erro ao obter relatório: {rel_ou_err}")
        elif success:
            print(f"Relatório obtido!")
            return rel_ou_err # Relatório obtido (dict - json parseado)  
        elif not success and rel_ou_err == '':
            print(f"Relatório não está disponível ainda.")

        time.sleep(5)
  
if __name__ == '__main__':  
	 instancia = "https://instancia.ecotrust.io"  
	 api_control = EcotrustAPI("<token>", instancia)
	 
	 
	 testar_criar_scan_parametrizado(api_control)
	 relatorio = teste_aguardar_relatorio(api_control, 'Scan parametrizdo - API 4')
	 print(relatorio)
``` 


