From 21f5227844df583e9a48c1d2851eb65b24aba6d3 Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Guedes Date: Wed, 19 Jan 2022 12:53:42 -0300 Subject: [PATCH] Starting the development process. --- api/dataapi/cli.py | 84 +++++++++++++++++++++++++++ api/dataapi/features/data_api.feature | 0 api/dataapi/features/steps/steps.py | 0 3 files changed, 84 insertions(+) create mode 100644 api/dataapi/cli.py create mode 100644 api/dataapi/features/data_api.feature create mode 100644 api/dataapi/features/steps/steps.py diff --git a/api/dataapi/cli.py b/api/dataapi/cli.py new file mode 100644 index 0000000..4b2f952 --- /dev/null +++ b/api/dataapi/cli.py @@ -0,0 +1,84 @@ +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 +# } \ No newline at end of file diff --git a/api/dataapi/features/data_api.feature b/api/dataapi/features/data_api.feature new file mode 100644 index 0000000..e69de29 diff --git a/api/dataapi/features/steps/steps.py b/api/dataapi/features/steps/steps.py new file mode 100644 index 0000000..e69de29