Sobre o projeto
Soenneker.Copper.OpenApiClientUtil é uma biblioteca .NET que fornece um cliente gerado pelo Kiota, reutilizável e criado de forma preguiçosa para a API do Copper, construído sobre um provedor HTTP do Copper configurado.
O que ele faz
- Expõe uma abstração `ICopperOpenApiClientUtil` cujo método `Get` inicializa o cliente uma única vez durante a vida útil do utilitário; chamadores concorrentes compartilham essa inicialização e recebem a mesma instância do cliente.
- Posiciona-se acima de um pacote HTTP do Copper que envia os cabeçalhos exigidos pelo Copper: `X-PW-AccessToken`, `X-PW-Application` e `X-PW-UserEmail`.
- A configuração é lida de uma seção `Copper` (por exemplo, `ApiKey` e `Email` para o proprietário do token), e o pacote subjacente também suporta `Copper:ClientBaseUrl`, `Copper:Application`, `Copper:AuthHeaderName` e `Copper:AuthHeaderValueTemplate`.
Instalação e registro
Instale via `dotnet add package Soenneker.Copper.OpenApiClientUtil`. Dois registradores de DI são fornecidos: `AddCopperOpenApiClientUtilAsSingleton()` para um único cliente compartilhado, e `AddCopperOpenApiClientUtilAsScoped()` quando cada escopo da aplicação deve fazer o cache de seu próprio cliente gerado, enquanto ainda compartilha o provedor HTTP singleton.
Uso típico
Uma classe consumidora injeta `ICopperOpenApiClientUtil`, aguarda `clientUtil.Get(cancellationToken)` e então chama métodos de endpoint gerados, como `client.Account.GetAsync(...)`.
Ressalvas documentadas
- A configuração é capturada quando o cliente HTTP subjacente é criado pela primeira vez, portanto, alterações de credenciais ou de URL base exigem a recriação do tempo de vida do serviço.
- A liberação de um utilitário com escopo (scoped) libera sua referência ao cliente gerado sem remover o `HttpClient` compartilhado; o provedor HTTP libera esse cliente quando o container da aplicação é encerrado.
- Alguns endpoints gerados retornam JSON como `string?` porque a coleção Postman de origem carece de um esquema de resposta forte.
- A chave de API, o e-mail do proprietário do token e os cabeçalhos de autenticação do Copper devem ser omitidos de logs e rastreamentos.
Escopo
O repositório é um wrapper de cliente leve, não uma aplicação de CRM completa: ele fornece a criação do cliente e o gerenciamento de tempo de vida, enquanto a cobertura da API e as formas de resposta são definidas pelo cliente Copper gerado.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.