From fb43dccea62394ea5afdacb2162fdefa916b4be7 Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Guedes Date: Tue, 18 Jan 2022 08:29:02 -0300 Subject: [PATCH] Adding configuration getters. --- api/replay/cli.py | 87 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/api/replay/cli.py b/api/replay/cli.py index 4f892f6..28e687b 100644 --- a/api/replay/cli.py +++ b/api/replay/cli.py @@ -2,6 +2,7 @@ from datetime import datetime import json import os import requests +import urllib class Replay: """ @@ -246,3 +247,89 @@ class Replay: return self.__request_json_post__ ("/api/v1/log/add", log) + def config_get (self, config_name: str): + """ + ## Configuration Getter + Este método busca a configuração associada ao nome recebido no repositório atual. + + --- + #### Parâmetros: + - config_name: Nome da configuração que se quer procurar o valor. + + --- + #### Retorna: + -> O valor associado à configuração procurada. + """ + + config_name = urllib.parse.quote(config_name, "") + + return self.__request_get__(f"/api/v1/config/byrepo/{int(os.path.basename(os.getcwd()))}/{config_name}") + + def config_get_global (self, config_name: str): + """ + ## Global Configuration Getter + Este método procura em todos os repositórios uma correspondência à configuração recebida. + + --- + #### Parâmetros: + - config_name: Nome da configuração que se quer buscar em todos os repositórios instalados. + + --- + #### Retorna: + -> O valor da configuração encontrada. + """ + + config_name = urllib.parse.quote(config_name, "") + + return self.__request_get__("/api/v1/config/global/"+config_name) + + def config_get_all (self): + """ + ## All Configuration Getter + Este método busca por todas as configurações contidas no repositório atual. + + --- + #### Parâmetros: + --- + + --- + #### Retorna: + -> Uma lista de dicionários contendo todas as configs e informações sobre elas. Por exemplo: + [ + { + "id": número associado a config na base de dados do replay, + + "k": nome associado à config na base de dados do replay, + + "v" valor atribuído à config, + + "t": tipo da config em questão (que pode ser 't', 'p' ou 'json'), + + "repo": repositório ao qual a configuração está associada + } + ] + """ + + return self.__request_get__(f"/api/v1/config/byrepo/{int(os.path.basename(os.getcwd()))}") + + def config_get_map (self) -> dict[str, dict]: + """ + ## Configuration Getter Mapper + Este método executa o método "config_get_all" para conseguir todas as configurações alocadas para o reposiório do projeto atual. Após isso, cria um dicionário de strings para outros dicionários contendo as configurações recebidas. As strings do primeiro dicionário são o nome associado à configuração. + + --- + #### Parâmetros: + --- + + --- + #### Retorna: + -> Dicionário de strings (nome da configuração) para dicionários (todas as propriedades da configuração). + """ + + dict_configs = {} + configs = self.config_get_all() + + for config in configs: + dict_configs[config["k"]] = config + + return dict_configs