GustavoAraujo26.ArchitectureTools
1.4.0
dotnet add package GustavoAraujo26.ArchitectureTools --version 1.4.0
NuGet\Install-Package GustavoAraujo26.ArchitectureTools -Version 1.4.0
<PackageReference Include="GustavoAraujo26.ArchitectureTools" Version="1.4.0" />
paket add GustavoAraujo26.ArchitectureTools --version 1.4.0
#r "nuget: GustavoAraujo26.ArchitectureTools, 1.4.0"
// Install GustavoAraujo26.ArchitectureTools as a Cake Addin #addin nuget:?package=GustavoAraujo26.ArchitectureTools&version=1.4.0 // Install GustavoAraujo26.ArchitectureTools as a Cake Tool #tool nuget:?package=GustavoAraujo26.ArchitectureTools&version=1.4.0
Architecture Tools
Introdução
Projeto para centralizar e expor algumas classes e ferramentas que utilizo com frequência, quando vou criar novos projetos.
Nele centralizo algumas classes implementando alguns design patterns, que auxiliam na criação de microsserviços.
Pacote foi criado no .NET Standard 2.1, para permitir a utilização em versões diferentes do .NET.
Principais funcionalidades
Abaixo, faço uma listagem das principais funcionalidades que podem ser encontrados no pacote.
Container que implementa o design pattern "Result". Utilizado para criar respostas para ações/métodos, se baseando no HTTP Status Code para informar se aquela ação foi realizada com sucesso ou falha. Além disso, permite devolver no seu corpo um objeto complexo (uma entidade, value object e afins), bem como structs (DateTime, Guid, integer, dentre outros).
Possui métodos estáticos que auxiliam na sua criação, seja para devolver uma chamada de sucesso ("Ok"), como para devolver chamadas de falha ("BadRequest", "NotFound", "InternalServerError", dentre outros status). Outra possibilidade é converter uma mensagem de resposta de uma chamada HTTP ("HttpResponseMessage") no container em si, já realizando a deserialização do conteúdo.
Implementa, "de certa forma", o design pattern "Options". Nele é possível realizar a leitura de variáveis de ambiente da aplicação, armazená-las internamente, para que, em momento posterior, o container possa ser recebido via injeção de dependências.
Classe implementada como "Singleton", para que possa ter somente uma instância injetada na aplicação.
A leitura e inicialização das variáveis pode ser feita tanto de forma unitária (passando variável por variável), como também através de uma lista de chaves de variáveis de ambiente.
Ferramenta para centralizar e controlar chamadas HTTP REST para outros serviços. O memso permite registrar diversas API's, com seus endpoints distintos e seus métodos.
Classe implementada como "Singleton", para que possa ter somente uma instância injetada na aplicação.
Para realizar as chamadas, basta acessar um item do "ApiResource", e acionar o método "Call", que espera a classe "ApiEndpointRequest". Através dela, é possível passar os parâmetros a serem utilizados na query da URL, ou enviar classe/objeto a ser transmitido no corpo do projeto.
Struct criada para auxiliar na utilização de "intervalos de período". Nele é possível armazenar um DateTime de início e um de término. Além disso, é possível realizar validação dos dados através do método "Validate".
Struct para representar mensagem de eventos a serem transmitidos em barramento de eventos (Azure EventBus, RabbitMQ, Kafka, etc).
Struct para centralizar dados de estado e datas de criação/alteração de um objeto.
Possui campo "State", para informar se o objeto está "habilitado" ou "desabilitado". Quando alterado o estado, via métodos "Enable"/"Disable", a data de alteração é alterada automaticamente.
Classe base para ser herdada, muito por "entidades", para centralizar dados básicos como "Id" e dados do estado do objeto.
Container para obter dados de uma opção de enumerador. Possui como propriedades o valor "inteiro" do item do enumerador, valor "string" do item do enumerador e descrição (quando houver o "decoration" DescriptionAttribute).
- Page:
Container que controla paginação a ser realizada em uma lista de itens. No mesmo é possível calcular a quantidade de páginas disponíveis (anteriores e próximas). Nas listagens de páginas anteriores e próximas páginas, o limite da lista está como 5 itens.
Container para retorno de dados paginados. Possui duas propriedades: "Page" e "Content" (uma lista de objetos).
Fábrica para manipulação de criptografia de textos, utilizando SHA256 e AES.
Struct para manipulação de senhas de usuários, utilizando criptografia o valor inserido.
Classe para realizar validações de integridade de senhas informadas.
Struct de geração de chaves aleatórias de 6 caracteres, muito utilizado em autenticações de múltiplos fatores.
Struct para geração de datas de expiração, permitindo realizar comparativos, capturar diferenças entre datas, etc.
Extensões
Foram criadas algumas extensões para auxiliar e agilizar a utilização da biblioteca.
GetService: Extensão do IServiceProvider para auxiliar a obtenção de serviços injetados.
ConfigureApiCollection: Extensão do IServiceCollection para injetar a classe ApiHttpCollection.
GetDescription - Enum: Extensão de Enum para obter o valor do atributo "Descrição".
GetData: Extensão de Enum para obter os dados do item do enumerador, através do EnumData.
List: Extensão de Enum para realizar listagem de todos os itens de um enumerador.
ConfigureEnvironmentSettings: Extensão do IServiceCollection para realizar a injeção do EnvironmentSettings.
ToAppResponse: Extensão do HTTPResponseMessage para realizar conversão para o ActionResponse.
GetDescription - HTTPStatusCode: Extensõa do enumerador HttpStatusCode para obter a "descrição" da opção do enumerador ("ReasonPhrase").
Truncate - string: Extensão para "truncar" uma string com base em uma quantidade máxima de caracteres.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.AspNetCore.WebUtilities (>= 2.1.1)
- Microsoft.Extensions.DependencyInjection (>= 3.1.32)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.32)
- System.Text.Json (>= 8.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Criação de classe de retorno de validação, além de sua inclusão no ActionResponse