import json import os import requests class DataAPI: """ ## Data API --- Esta classe permite a execução de comandos básicos SQL para o banco de dados remoto do Replay. Para que a classe funcione corretamente, é necessário que o usuário tenha acesso à chave da API do BD remoto. Devendo passá-la como parâmetro ao instanciar a classe DataAPI. Por exemplo: d_api = DataAPI ("ahsgcn21390-dsaf_dain2eq81288sad9") """ ep: str = "" def __init__ (self, api_key: str): self.ep = "https://dataapi.digitalcircle.com.br" self.api_key = api_key def __request_json_post__ (self, object: dict): """ ## HTTP JSON POST --- Este método é responsável por realizar requisições HTTP do tipo POST para objetos JSON. Ele retorna o corpo de resposta da requisição, ou uma mensagem de erro, que indica qual foi a irregularidade ocorrida ao chamar a API. """ url = self.ep + "/" print("Calling: " + url) headers = {"X-API-KEY": self.api_key} res = requests.post(url, json = object, headers = headers, verify = False) if res.status_code >= 400: raise Exception(f"HTTP ERROR: {str(res.status_code)} - {res.text}") if res.headers.get("Content-Type") != None and res.headers.get("Content-Type").find("json") != -1: return json.loads(res.text) else: return res.text def do (self, table: str, operation: str, id: str = "*", sql_attribute: str = "*", data: dict = {}): """ ## DataAPI Do Este método é responsável pela execução dos comandos SQL no Banco de Dados remoto. --- #### Parâmetros: - table: Nome da tabela SQL em que se quer realizar a operação (OBRIGATÓRIO) - operation: Operação que se quer desenvolver. São elas: "R", "C", "D", "U" (OBRIGATÓRIO) - R: Retrieve (Busca informações da coluna da tabela) - C: Create (Cria uma nova tabela) - D: Delete (Deleta uma tabela ou as colunas de uma tabela) - U: Update (Atualiza as informações de uma tabela) - sql_attribute: Nome do atributo (coluna) que se quer consultar ou alterar na tabela SQL - id: Identificador da instância (linha) da tabela que se quer realizar a operação - data: Dados que se quer inserir na tabela --- #### Retorna: -> O retorno do comando feito, qualquer que seja ele. """ request_body = { "Col": table, "Op": operation, "Q": sql_attribute, "Id": id, "Data": data } return self.__request_json_post__(request_body) # func (c *Cli) Do(request *DataAPIRequest) (response *DataAPIResponse, err error) { # response = &DataAPIResponse{} # err = c.Httpcli.JsonPost("/", request, response) # return # }